专利摘要:
techniques related to decoder side motion vector (dmvd) derivation are described. for example, this description describes techniques related to applying one or more restrictions to motion information, such as a motion vector (mv) derived by dmvd, and / or a difference in mv between an initial mv and a mv derived by dmvd . when the constraint is applied to the dmvd, in certain examples, only the derived movement information, which corresponds to the constraint, is considered to be valid movement information. conditions can be imposed on restrictions.
公开号:BR112019019210A2
申请号:R112019019210
申请日:2018-03-22
公开日:2020-04-14
发明作者:Chuang Hsiao-Chiang;Chen Jianle;Karczewicz Marta;Chien Wei-Jung;Li Xiang;Chen Yi-Wen
申请人:Qualcomm Inc;
IPC主号:
专利说明:

RESTRICTION RESTRICTION VECTOR INFORMATION DERIVED BY DECODER SIDE MOTION VECTOR DERIVATION [01] This application claims the benefits of US provisional patent application No. 62 / 475,177, filed on March 22, 2017, which is incorporated here by reference in its entirety.
TECHNICAL FIELD [02] This description refers to video encoding.
FUNDAMENTALS [03] Digital video capabilities can be incorporated into a wide range of devices, including digital televisions, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop and desktop computers, tablet computers, readers e-book, digital cameras, digital recording devices, digital media playback devices, video game devices, video game consoles, cell phones or satellite radio, so-called smartphones, video conference devices, video devices video sequencing, and the like. Digital video devices implement video encoding techniques, such as those described in the standards defined by ITU-T H. 261, ISO / IEC MPEG-1 Visual, ITU-T H.262 or ISO / IEC MPEG-2 Visual , ITU-T H.263, ITU-T H. 264 / MPEG-4, Part 10, Advanced Video Encoding (AVC), ITU-T H.265 / High Efficiency Video Coding (HEVC), and extensions of such standards, such as Scalable Video Encoding (SVC) extensions and Multiple View Video Encoding (MVC). The devices
Petition 870190092357, of 09/16/2019, p. 8/156
2/107 video can transmit, receive, encode, decode and / or store digital video information more efficiently by implementing such video encoding techniques.
[04] Video encoding techniques include spatial forecasting (intraimage) and / or temporal forecasting (interimaging) to reduce or remove the redundancy inherent in video sequences. For block-based video encoding, a video slice (for example, a video image or part of a video image) can be divided into video blocks, which can also be referred to as encoding tree units ( CTUs), encoding units (CUs) and / or encoding nodes. The video blocks in an intracoded (I) slice of an image are encoded using spatial prediction with respect to the reference samples in neighboring blocks in the same image. Video blocks in an intercoded slice (P or B) of an image can use spatial prediction with respect to reference samples in neighboring blocks in the same image or temporal prediction with respect to reference samples in other reference images. Images can be referred to as frames, and reference images can be referred to as reference frames.
[05] The spatial or temporal forecast results in a forecast block for a block to be coded. Residual data represents the pixel differences between the original block to be encoded and the forecast block. An intercodified block is coded according to a motion vector that points to a block of reference samples that form the forecast block, and the data
Petition 870190092357, of 09/16/2019, p. 9/156
3/107 residuals indicating the difference between the coded block and the forecast block. An intra-encoded block is encoded according to an intra-encoding mode and residual data. For additional compression, residual data can be transformed from pixel domain to transformation domain, resulting in residual transformation coefficients, which can then be quantized. The quantized transformation coefficients, initially arranged in a two-dimensional set, can be digitized in order to produce a one-dimensional vector of transformation coefficients, and entropy coding can be applied to achieve even more compression.
SUMMARY [06] In general, this description describes the techniques related to decoder side motion vector (DMVD) derivation. For example, this description describes techniques related to the application of one or more restrictions to motion information, such as a motion vector (MV) derived by DMVD, and / or a MV difference between an initial MV and a MV derived by DMVD. These techniques can be applied to any of the existing video codecs, such as HEVC (High Efficiency Video Encoding) and / or can be an efficient encoding tool for any video encoding standards in the future. When the constraint is applied to the VMs and / or VM differences derived with DMVD, in certain examples, only the derived movement information, which corresponds to the constraint, is considered valid movement information. Thus, the list of MVs and the final MV
Petition 870190092357, of 09/16/2019, p. 10/156
4/107 selected may be different if the restriction has not been used, which can increase the efficiency of the encoding and / or reduce the bit rate. In some examples, the constraint includes whether the derived VMs are symmetric, whether the MV differences between the initial VMs and the VMs derived by the DMVD methods are symmetric, whether the derived VMs are antisymmetric, whether the MV differences between the initial VMs and VMs derived by DMVD methods are antisymmetric. In some examples, the activation of the MV restrictions / symmetric / antisymmetric MV differences is explicitly flagged. In other examples, restrictions can be determined implicitly according to some encoded information. In additional examples, conditions may be imposed on restrictions, so that the restriction only applies to certain examples.
[07] In one example, a method of decoding video data from an encoded video bit stream, the method comprising generating, using the decoder side motion vector (DMVD) derivation, a plurality of vectors derived motion vectors, determine a first derived motion vector and a second derived motion vector from the plurality of derived motion vectors, based on a cost metric, which comprises determining that the first derived motion vector and the second vector derived motion satisfy at least one constraint in a relationship between the first derived motion vector and the second derived motion vector, the relationship comprising: the first derived motion vector and the second motion vector
Petition 870190092357, of 09/16/2019, p. 11/156
5/107 derivative having a symmetric motion vector difference, the first derived motion vector and the second derived motion vector having a pseudo-symmetric motion vector difference, the first derived motion vector and the second derived motion vector being antisymmetric, the first derived motion vector and the second derived motion vector having an antisymmetric motion vector difference, or the first derived motion vector and the second derived motion vector having an antisymmetric motion vector difference, and decoding a current block using the first derived motion vector and the second derived motion vector determined using the double prediction.
[08] In another example, a method of encoding video data, the method comprising generating, using a decoder side motion vector (DMVD) derivation, a plurality of derived motion vectors, to determine a first motion vector derivative and a second derived motion vector from the plurality of derived motion vectors based on a cost metric, comprising: determining that the first derived motion vector and the second derived motion vector satisfy at least one constraint in a relationship between the first derived motion vector and the second derived motion vector, the relationship comprising: the first derived motion vector and the second derived motion vector having a symmetric motion vector difference, the first derived motion vector and the second motion vector
Petition 870190092357, of 09/16/2019, p. 12/156
6/107 derivative having a pseudo-symmetric motion vector difference, the first derived motion vector and the second derived motion vector being antisymmetric, the first derived motion vector and the second derived motion vector having a vector difference antisymmetric motion, or the first derived motion vector and the second derived motion vector having a difference of pseudo-antisymmetric motion vector, and encoding a current block using the first derived motion vector and the second derived motion vector determined using the double forecast.
[09] In another example, a device configured to decode video data from an encoded video bit stream, the device comprising a memory configured to store video data, and one or more processors in communication with the memory , the one or more processors configured to generate, using the decoder side motion vector (DMVD) derivation, a plurality of derived motion vectors, to determine a first derived motion vector and a second derived motion vector from the plurality of derived motion vectors based on a cost metric, comprising determining that the first derived motion vector and the second derived motion vector satisfy at least one constraint in a relationship between the first derived motion vector and the second derived motion, the relationship comprising the first derived motion vector and the second derived motion vector have
Petition 870190092357, of 09/16/2019, p. 13/156
7/107 a symmetric motion vector difference, the first derived motion vector and the second derived motion vector have a pseudo-symmetric motion vector difference, the first derived motion vector and the second derived motion vector are antisymmetric , the first derived motion vector and the second derived motion vector have an antisymmetric motion vector difference, or the first derived motion vector and the second derived motion vector have an antisymmetric motion vector difference, and decode a block current using the first derived motion vector and the second derived motion vector determined using the double forecast.
[010] In another example, a device configured to encode video data, the device comprising a memory configured to store video data, and one or more processors in communication with the memory, the one or more processors configured to generate, using the decoder side motion vector (DMVD) derivation, a plurality of derived motion vectors, determining a first derived motion vector and a second derived motion vector from the plurality of derived motion vectors based on a metric of cost, comprising a determination that the first derived motion vector and the second derived motion vector satisfy at least one constraint in a relationship between the first derived motion vector and the second derived motion vector, the relationship comprising the first vector of
Petition 870190092357, of 09/16/2019, p. 14/156
8/107 derived motion and the second derived motion vector have a symmetric motion vector difference, the first derived motion vector and the second derived motion vector have a pseudo-symmetric motion vector difference, the first motion vector derivative and the second derived motion vector are antisymmetric, the first derived motion vector and the second derived motion vector have a difference of antisymmetric motion vector, or the first derived motion vector and the second derived motion vector have a difference antisymmetric motion vector, and decode a current block using the first derived motion vector and the second derived motion vector determined using the double prediction.
[011] In another example, a device configured to decode video data from an encoded video bit stream, the device comprising: means for generating, using decoder side motion vector (DMVD) derivation, a plurality of derived motion vectors, means for determining a first derived motion vector and a second derived motion vector from the plurality of derived motion vectors based on a cost metric, comprising: means for determining that the first vector derived motion vector and the second derived motion vector satisfy at least one constraint in a relationship between the first derived motion vector and the second derived motion vector, the relationship comprising: the first derived motion vector and the second motion vector
Petition 870190092357, of 09/16/2019, p. 15/156
9/107 derived motion have a symmetric motion vector difference, the first derived motion vector and the second derived motion vector have a pseudo-symmetric motion vector difference, the first derived motion vector and the second motion vector derivative are antisymmetric, the first derived motion vector and the second derived motion vector have an antisymmetric motion vector difference, or the first derived motion vector and the second derived motion vector have a pseudo-antisymmetric motion vector difference. , and means for decoding a current block using the first derived motion vector and the second derived motion vector determined using the double prediction.
[012] In another example, an apparatus configured to encode video data, the apparatus comprising: means for generating, using the decoder side motion vector (DMVD) derivation, a plurality of derived motion vectors, means for determining a first derived motion vector and a second derived motion vector from the plurality of derived motion vectors based on a cost metric, comprising: means for determining that the first derived motion vector and the second derived motion vector satisfy at least one constraint in a relationship between the first derived motion vector and the second derived motion vector, the relationship comprising the first derived motion vector and the second derived motion vector having a symmetric motion vector difference, the first derived motion vector
Petition 870190092357, of 09/16/2019, p. 16/156
10/107 and the second derived motion vector have a difference of pseudo-symmetric motion vector, the first derived motion vector and the second derived motion vector are antisymmetric, the first derived motion vector and the second derived motion vector have an antisymmetric motion vector difference, or the first derived motion vector and the second derived motion vector have an antisymmetric motion vector difference, and means for encoding a current block using the first derived motion vector and the second vector derived motion patterns using a double forecast.
[013] In another example, this description describes a computer-readable storage medium, storing instructions that, when executed, cause one or more processors from a device configured to generate, using the decoder side motion vector derivation (DMVD), a plurality of derived motion vectors, determining a first derived motion vector and a second derived motion vector from the plurality of derived motion vectors based on a cost metric, comprising: determining that the first vector derived motion vector and the second derived motion vector satisfy at least one constraint in a relationship between the first derived motion vector and the second derived motion vector, the relationship comprising: the first derived motion vector and the second derived motion vector have a symmetric motion vector difference, the first derived motion vector and the second vector of movement
Petition 870190092357, of 09/16/2019, p. 17/156
11/107 derivative have a pseudo-symmetric motion vector difference, the first derived motion vector and the second derived motion vector are antisymmetric, the first derived motion vector and the second derived motion vector have a vector difference antisymmetric motion, or the first derived motion vector and the second derived motion vector have a pseudo-antisymmetric motion vector difference, and decode a current block using the first derived motion vector and the second derived motion vector determined using a double forecast.
[014] In another example, this description describes a computer-readable storage medium storing instructions that, when executed, cause one or more processors from a device configured to generate, using the decoder side motion vector derivation ( DMVD), a plurality of derived motion vectors, determining a first derived motion vector and a second derived motion vector from the plurality of derived motion vectors based on a cost metric, comprising: determining that the first derivative motion and the second derived motion vector satisfy at least one constraint in a relationship between the first derived motion vector and the second derived motion vector, the relationship comprising: the first derived motion vector and the second derived motion vector have a difference of symmetric motion vector, the first derived motion vector and the second vector of movement
Petition 870190092357, of 09/16/2019, p. 18/156
12/107 derivative have a pseudo-symmetric motion vector difference, the first derived motion vector and the second derived motion vector are antisymmetric, the first derived motion vector and the second derived motion vector have a vector difference antisymmetric motion, or the first derived motion vector and the second derived motion vector have a difference of pseudo-antisymmetric motion vector, and decode a current block using the first derived motion vector and the second derived motion vector determined using the double forecast.
[015] Details of one or more examples are presented in the attached drawings and in the description below. Other characteristics, objectives and advantages will be apparent from the description and the drawings and claims.
BRIEF DESCRIPTION OF THE DRAWINGS [016] Figure 1 is a block diagram illustrating an illustrative video encoding and decoding system that can use the techniques to perform the decoder side motion vector (DMVD) derivation of that description;
[017] Figure 2 is a block diagram illustrating an example of a video encoder that can implement the techniques for performing DMVD of that description;
[018] Figure 3 is a block diagram illustrating an example of a video decoder that can implement the techniques for performing DMVD of that description;
[019] Figures 4A and 4B are a diagram
Petition 870190092357, of 09/16/2019, p. 19/156
13/107 conceptual illustrating candidates for spatial motion vectors derived from neighboring blocks;
[020] Figures 5A and 5B are a conceptual diagram illustrating a primary block location for a candidate for temporal motion vector predictor (TMVP);
[021] Figure 6 is a conceptual diagram illustrating the concepts related to the bilateral combination to derive the movement information of a current block;
[022] Figure 7 is a conceptual diagram illustrating the concepts related to the template combination to derive movement information from a current block;
[023] Figure 8 is a flowchart illustrating an example of an illustrative frame rate upward conversion (FRUC) matching process;
[024] Figure 9 is a flow chart illustrating the proposed illustrative changes to the FRUC template matching process in figure 8;
[025] Figure 10 is a conceptual diagram illustrating the concepts related to an example of bidirectional optical flow;
[026] Figure 11 is a conceptual diagram illustrating an example of the gradient calculation for an 8 x 4 block;
[027] Figure 12 is a conceptual diagram illustrating the concepts related to DMVD based on the bilateral combination of feedback;
[028] Figures 13A and 13B are a diagram
Petition 870190092357, of 09/16/2019, p. 20/156
14/107 conceptual illustrating the concepts related to overlapping block movement compensation (OBMC);
[029] Figures 14A through 14D are conceptual diagrams illustrating OBMC weights;
[030] Figure 15 is a conceptual diagram illustrating the concepts related to the bilateral combination to derive movement information from a current block;
[031] Figure 16 is a flowchart illustrating an illustrative method of decoding video data according to the techniques described in that description;
[032] Figure 17 is a flow chart illustrating an illustrative method of encoding video data according to the techniques described in that description.
DETAILED DESCRIPTION [033] This description presents the techniques related to decoder side motion vector (DMVD) derivation. The techniques of this description can be used as an efficient tool in any future video coding standard.
[034] In general, this description describes techniques for deriving motion information (for example, one or more motion vectors, precision of a motion vector and / or difference of motion vector, and one or more image indexes of reference) used to encode blocks of video data and to determine, by a video decoder, the same motion information that was determined by the video encoder. Using the same derivation techniques (or alternatives) used by the video encoder, a video decoder
Petition 870190092357, of 09/16/2019, p. 21/156
15/107 video can determine, without receiving any syntax elements by specifically identifying the motion information, which motion information was used to encode the video data. In some coding situations, however, the video encoder can still explicitly signal the motion information used to encode the block.
[035] Several techniques in this description can be described with reference to a video encoder, which must be a generic term that can refer to a video encoder or a video decoder. Unless explicitly stated otherwise, it should not be assumed that the techniques described with respect to a video encoder or a video decoder cannot be performed by the other among a video encoder or a video decoder. For example, in many cases, a video decoder performs the same encoding technique, or sometimes an alternative, as a video encoder in order to decode the encoded video data. In many cases, a video encoder can also include a video decoding circuit, and in this way, the video encoder performs video decoding as part of the video data encoding. Thus, unless otherwise stated, the techniques described in that description with respect to a video decoder can also be performed by a video encoder, and vice versa.
[036] This description can also use terms such as a current layer, a current block, a current image, a current slice, etc. In the context of this
Petition 870190092357, of 09/16/2019, p. 22/156
16/107 description, the current term should identify a layer, block, image, slice, etc. that is currently being encoded, as opposed to, for example, layers, blocks, images and slices previously coded or blocks, images and slices yet to be encoded.
[037] A new video encoding standard, called High Efficiency Video Coding (HEVC) (also referred to as ITU-T H.265), including its range extension, multi-view extension (MV-HEVC) and scalable extension (SHVC), was developed by the Joint Video Coding Collaboration Team (JCT-VC), in addition to the Joint Collaboration Team in 3D Video Coding Extension Development (HCT-3V) of the Group of Experts in Video Coding ITU-T (VCEG) and ISO / IEC Moving Image Experts Group (MPEG). The HEVC specification, referred to as HEVC WD hereinafter, is available at phenix.intevry.fr/j ct / doc_end_user / documents / 14_Vienna / wgll / JCTVCN1003-V1. zip.
[038] ITU-T VCEG (Q6 / 16) and ISO / IEC MPEG (JTC 1 / SC 29 / WG 11) are currently studying the potential need to standardize future video encoding technology with a capacity of compression that significantly exceeds that of the current HEVC standard (including its current extensions and near-term extensions for encoding screen content and encoding high dynamic range). The groups are working together on this exploration activity in a joint collaborative effort known as the Joint Video Exploration Team (JVET) to evaluate the technology projects of
Petition 870190092357, of 09/16/2019, p. 23/156
17/107 compression proposed by its specialists in this area. JVET first met between 19 and 21 October 2015. A version of the reference software, that is, Joint Exploration Model 5 (JEM 5), is available at j vet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/ tags / HM-16.6JEM-5.0. A description of the JEM 5 algorithm is available at phenix.itsudparis.eu/jvet/doc_end_user/current_document.php id=2714.
[039] Figure 1 is a block diagram illustrating an illustrative video encoding and decoding system 10 that can use the techniques to perform the DMVD of that description. As illustrated in figure 1, system 10 includes a source device 12 that provides encoded video data to be further decoded by a destination device 14. In particular, source device 12 provides video data to destination device 14 via a computer-readable medium 16. The source device 12 and the target device 14 can comprise any of a wide range of devices, including desktop computers, notebook computers (ie laptop), tablet computers, decoders, telephone sets such as so-called smartphones, so-called smart pads, televisions, cameras, display devices, digital media devices, video game consoles, video sequencing devices, or the like. In some cases, the source device 12 and the target device 14 may be equipped for wireless communication.
[040] Target device 14 can
Petition 870190092357, of 09/16/2019, p. 24/156
18/107 receiving the encoded video data to be decoded via the computer-readable medium 16. The computer-readable medium 16 can comprise any type of medium or device capable of moving the encoded video data from the source device 12 to the source device. destination 14. In one example, the computer-readable medium 16 may comprise a communication medium to allow the source device 12 to transmit the encoded video data directly to the destination device 14 in real time. The encoded video data can be modulated according to a communication standard, such as a wireless communication protocol, and transmitted to the destination device 14. The communication medium can comprise any wired or wireless communication medium, such as such as a radio frequency spectrum (RE) or one or more physical transmission lines. The communication medium can form part of a packet-based network, such as a local area network, a wide area network, or a global network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be useful to facilitate communication from the source device 12 to the destination device 14.
[041] In some examples, encrypted data can be sent from the output interface 22 to a storage device. Similarly, encrypted data can be accessed from the storage device via the input interface. The storage device may include any of a variety of data storage media
Petition 870190092357, of 09/16/2019, p. 25/156
19/107 distributed or accessed locally, such as a hard drive, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital storage medium to store the decoded video data. In an additional example, the storage device can correspond to a file server or other intermediate storage device that can store the encoded video generated by the source device 12. The destination device 14 can access the stored video data from the device storage by sequencing or downloading. The file server can be any type of server capable of storing encoded video data and transmitting that encoded video data to the target device 14. Illustrative file servers include a network server (for example, to a network site) , an FTP server, network-attached storage devices (NAS), or a local disk driver. The target device 14 can access the encoded video data through any standard data connection, including an Internet connection. This can include a wireless channel (for example, a Wi-Fi connection), a wired connection (for example, DSL, cable modem, etc.), or a combination of both that is suitable for accessing video data encoded files stored on a file server. The transmission of the encoded video data from the storage device may be a sequencing transmission, a downloadable transmission, or a combination thereof.
[042] The techniques of this description are not
Petition 870190092357, of 09/16/2019, p. 26/156
10/207 necessarily limited to wireless applications or settings. The techniques can be applied to video encoding to support any of a variety of multimedia applications, such as broadcast television broadcasts, cable television broadcasts, satellite television broadcasts, Internet streaming video broadcasts, such as dynamic adaptive sequencing over HTTP (DASH), digital video that is encoded on a data storage medium, video decoding of data stored on a data storage medium, or other applications. In some instances, system 10 can be configured to support one-way or two-way video transmission to support applications, such as video sequencing, video playback, video broadcasting and / or video telephony.
[043] In the example in figure 1, source device 12 includes video source 18, video encoder 20 and output interface 22. Target device 14 includes input interface 28, video decoder 30, and the display device 32. In other examples, a source device and a target device may include other components or arrangements. For example, source device 12 can receive video data from an external video source 18, such as an external camera. Likewise, the target device 14 can interface with an external display device, instead of including an integrated display device. According to this description, the video encoder 20 of the source device 12 and / or the video decoder 30 of the source device
Petition 870190092357, of 09/16/2019, p. 27/156
21/107 destination 14 can be configured to perform one or more DMVD techniques described here. For example, video encoder 20 and / or video decoder 30 can be configured to apply one or more restrictions to (1) a DMVD-derived MV, and / or (2) an MV difference between an initial MV and a MV derived by DMVD. A constraint can include a limitation on the motion vectors derived by the DMVD process. Illustrative restrictions of this description may include restrictions that impose some predefined relationship between the MV and MVDs in two reference image lists (for example, ListO and Listl). When the constraint is applied to DMVD, in certain examples, only the derived movement information, which corresponds to the constraint, is considered to be valid movement information. Thus, the list of VMs and the selected final VM may be different if the constraint had not been used. In a first example, the constraint includes whether the derived VMs are symmetric. In a second example, the constraint includes whether the MV differences between the initial VMs and the VMs derived by the DMVD methods are symmetric. In a third example the constraint includes whether derived VMs are antisymmetric. In a fourth example, the constraint includes whether the MV differences between the initial VMs and the VMs derived by the DMVD methods are antisymmetric. In some examples, the activation of MV restrictions / differences between symmetric / antisymmetric VMs is explicitly flagged. In other examples, restrictions can be determined implicitly according to some encoded information.
[044] In additional examples, conditions may be imposed on restrictions so that the restriction is
Petition 870190092357, of 09/16/2019, p. 28/156
10/22 apply only to certain examples. Conditions may include a limitation on when restrictions are activated. For example, (1) the constraint can only be activated when the initial VMs are symmetric; (2) the constraint is only activated when the initial VMs are pseudo-symmetric; (3) the constraint is only activated when the initial VMs are antisymmetric; (4) the restriction is only applied when the initial VMs are pseudo-antisymmetric; (5) the constraint is only activated when the initial VMs are not symmetric; (6) the constraint is only activated when the initial VMs are not pseudo-symmetric; (7) the restriction is only activated when the initial VMs are not antisymmetric; (8) the constraint is only activated when the initial VMs are not pseudoantisymmetric; (9) the constraint is only activated when the reference images ListO and Listl of the initial MVs are both before or both after the current image; (10) the constraint is only activated when the reference images ListO and Listl of the initial MVs are NOT both before or both after the current image; (11) the restriction is only applied when the reference index of the initial VMs is both zero; (12) the constraint is only activated when the reference index of the initial VMs is NOT both equal to zero; (13) the constraint is only activated when the POC distances between the ListO reference image and the current image and the POC distances between the Listl reference image and the current image are the same; (14) the constraint is activated only when the POC distances between the Listl reference image and the current image are NOT equal; (15) the symmetric VM difference constraint is applied when the initial VMs are not symmetric; and / or (16) the restriction of
Petition 870190092357, of 09/16/2019, p. 29/156
23/107 antisymmetric VM difference is applied when the initial VMs are symmetric.
[045] In an additional example, the symmetric constraint MV resolution can be designated deterministically. In one example, for the entire pixel refinement of the Bilateral Template Combination, no symmetric / pseudo-symmetric / asymmetric constraints should be imposed, and the restrictions mentioned above are just a precision refinement of half-pixel, quarter-pixel motion. or higher accuracy. The level of restriction (of the MV resolution) can be signaled through SPS / PPS / Slice Header. The resolution can also be decided along with the fact that other motion refinement tools, such as BIO, sub-pixel frame rate upward conversion (FRUC) are enabled. For example, when BIO is enabled, the constraint should not be imposed on fine-tuning fine movement of a quarter pixel or higher.
[046] In another example, the level of restriction can be made adaptive, according to the absolute difference between MVs from ListO (also referred to as L0) and Listl (also referred to as Ll), the staggered absolute difference (based on distance Relative POC) between ListO and Listl MVs, or the initial SAD values between the interpolated samples of ListO and Listl (that is, P0 and PI in this example). Alternatively, the ratio of the SAD values between (current model P0) and current model, Pl) can be used to decide in which MV resolution the constraint should be imposed. In this example, if the ratio of the SAD values is less than a threshold, then no symmetric constraint
Petition 870190092357, of 09/16/2019, p. 30/156
24/107 mentioned above must be imposed.
[047] Additionally, in some instances, a single constraint (for example, symmetric VMs, difference from symmetric VMs, antisymmetric MVS, or difference from antisymmetric VMs) is applied to derived VMs based on a condition. In other examples, multiple restrictions are applied to derived VMs based on multiple conditions.
[048] The illustrated system 10 in figure 1 is merely an example. The techniques for performing DMVD of that description can be performed by any digital video encoding and / or decoding device. For example, techniques to restrict (1) a DMVD-derived VM, and / or (2) a VM difference between an initial VM and a DMVD-derived VM can be performed by any video encoding and / or decoding device digital. Although the techniques of this description are generally performed by a video encoding device, the techniques can also be performed by a video encoder / decoder, typically referred to as CODEC. In addition, the techniques of this description can also be performed by a video preprocessor. The source device 112 and the target device 14 are merely examples of such encoding devices in which the source device 12 generates the encoded video data for transmission to the target device
14. In some examples, devices 12, 14 may operate in a substantially symmetrical manner so that each of devices 12, 14 includes video encoding and decoding components. In this way, system 10 can
Petition 870190092357, of 09/16/2019, p. 31/156
25/107 support one-way or two-way transmission between video devices 12, 14, for example, for video sequencing, video playback, video broadcasting or video telephony.
[049] The video source 18 of the source device 12 may include a video capture device, such as a video camera, a video file containing previously captured video and / or a video feed interface for receiving video from a video content provider. As an additional alternative, video source 18 can generate data based on computer graphics as a source video, or a combination of live video, archived video, and computer generated video. In some cases, if the video source 18 is a video camera, the source device 12 and the destination device 14 can form so-called camera phones or video phones. As mentioned above, however, the techniques described in this description may be applicable to video encoding in general, and can be applied to wired and / or wireless applications. In each case, the captured, pre-captured, or computer generated video can be encoded by the video encoder 20. The encoded video information can then be sent via the output interface 22 to a computer-readable medium 16.
[050] Computer-readable medium 16 may include transient medium, such as a wireless broadcast or wired network transmission, or storage medium (i.e., non-transient storage medium), such as hard disk, flash drive, compact disc, digital video disc, Blu-ray disc, or other media readable by
Petition 870190092357, of 09/16/2019, p. 32/156
26/107 computer. In some examples, a network server (not shown) can receive encoded video data from source device 112 and provide encoded video data to destination device 14, for example, via network transmission. Similarly, a computing device of a media production facility, such as a disc embossing facility, can receive encoded video data from source device 12 and produce a disc containing the encoded video data. Therefore, the computer-readable medium 16 can be understood as including one or more computer-readable medium in various ways, in various examples.
[051] Input interface 28 of destination device 14 receives computer-readable medium information 16. Computer-readable medium information 16 may include syntax information defined by video encoder 20, which is also used by the video decoder 30, which includes elements of syntax that describe the characteristics and / or processing of blocks and other coded units. The display device 32 displays the decoded video data for a user, and can comprise any of a variety of display devices, such as a cathode ray tube (CRT), a liquid crystal display (LCD), a monitor plasma, an organic light emitting diode (OLED) monitor, or other type of display device.
[052] Video encoder 20 and video decoder 30 can operate according to a video encoding standard, such as the High Efficiency Video Encoding (HEVC) standard, as well
Petition 870190092357, of 09/16/2019, p. 33/156
27/107 referred to as ITU-T H.265. Alternatively, video encoder 20 and video decoder 30 can operate in accordance with other industry or proprietary standards, such as the ITU-T H.264 standard, alternatively referred to as MPEG-4, Part 10, Advanced Video Encoding (AVC), or extensions of such standards. The techniques of this description, however, are not limited to any particular coding standard. Other examples of video encoding standards include MPEG-2 and ITU-T H.263. Although not shown in Figure 1, in some respects the video encoder 20 and video decoder 30 can each be integrated with an audio encoder and decoder, and may include suitable MUX-DEMUX units, or other hardware and software, to handle audio and video encoding in a common data stream or separate data streams. If applicable, MUX-DEMUX units can conform to the ITU H.223 multiplexer protocol, or other protocols, such as the user datagram protocol (UDP).
[053] Video encoder 20 and video decoder 30 can each be implemented as any one of a variety of suitable encoder and / or decoder circuit packs, such as one or more microprocessors, processing (including fixed function circuitry and / or programmable processing circuitry), digital signal processors (DSPs), application-specific integrated circuits (ASICs), field programmable port assemblies (FPGAs), discrete logic , software, hardware, firmware or any
Petition 870190092357, of 09/16/2019, p. 34/156
28/107 combinations thereof. When the techniques are partially implemented in software, a device can store instructions for software in an appropriate non-transitory computer-readable medium and execute instructions in hardware using one or more processors to perform the techniques of that description. Each of video encoder 20 and video decoder 30 can be included in one or more encoders or decoders, any of which can be integrated as part of a combined encoder / decoder (CODEC) in a respective device. A device including the video encoder 20 and / or the video decoder 30 can comprise an integrated circuit, a microprocessor and / or a wireless communication device, such as a cell phone.
[054] In general, according to ITU-T H.265, a video image can be divided into a sequence of encoding tree units (CTUs) (or larger encoding units (LCUs)) that can include both luminescence and chrominance samples. Alternatively, CTUs can include monochrome data (that is, only luminescence samples). The syntax data within a bit stream can define a size for the CTU, which is a larger encoding unit in terms of the number of pixels. A slice includes a number of consecutive CTUs in the order of encoding. A video image can be divided into one or more slices. Each CTU can be divided into coding units (CUs), according to a quadtree. In general, a quadtree data structure includes one node per CU, with a root node corresponding to the CTU.
Petition 870190092357, of 09/16/2019, p. 35/156
10/29
If a CU is divided into four sub-CUs, the node corresponding to the CU includes four leaf nodes, each of which corresponds to one of the sub-CUs.
[055] Each node of the quadtree data structure can provide syntax data for the corresponding CU. For example, a node in the quadtree can include a split indicator, indicating whether the CU that corresponds to the node is divided into sub-CUs. The syntax elements for a CU can be defined recursively, and may depend on whether the CU has been divided into sub-CUs. If a CU is not further divided, it is referred to as a CU sheet. In this description, four sub-CUs of a CU leaf will be referred to as leaf CUs, even if there is no explicit division of the original CU leaf. For example, if a 16 x 16 CU size is not further divided, the four 8 x 8 sub-CUs will also be referred to as leaf CUs although the 16 x 16 CU has never been divided.
[056] A CU has a similar purpose to that of a H.264 macro block, except that a CU does not have a size distinction. For example, a CTU can be divided into four child nodes (also referred to as sub-CUs), and each child node can, in turn, be a parent node and be divided into four other child nodes. A final, undivided child node, referred to as a quadtree leaf node, comprises an encoding node, also referred to as a CU leaf. The syntax data associated with an encoded bit stream can define a maximum number of times that a CTU can be divided, referred to as a maximum CU depth, and can also define a minimum encoding node size. Accordingly, a
Petition 870190092357, of 09/16/2019, p. 36/156
30/107 bit sequence can also define a smaller encoding unit (SCU). This description uses the term block to refer to any one of a CU, a forecast unit (PU) or a transformation unit (TU), in the context of HEVC, or similar data structures in the context of other standards (for example , macro blocks or sub-blocks of the same in H.264 / AVC).
[057]
A CU includes a coding node and forecasting units (PUs) and transformation units (TUs) associated with the coding node. A CU size corresponds to a coding node size and is usually square in shape. The size of the CU can vary from 8 x 8 pixels to the size of the CTU with a maximum size, for example, 64 x 64 pixels or more. Each CU can contain one or more PUs and one or more TUs. The syntax data associated with a CU can describe, for example, the partition of the CU into one or more PUs. Partition modes can differ between whether CU was jump-encoded or direct-mode, encoded by intra-forecast mode, or encoded by interpret-mode. PUs can be divided so that they have a non-square shape. The syntax data associated with a CU can also describe, for example, the partition of the CU into one or more TUs according to a quadtree. A TU can be square or non-square (for example, rectangular).
[058]
The HEVC standard allows transformations according to the TUs, which can be different for different CUs. TUs are typically sized based on the size of PUs (or CU partitions) within a given CU defined for a split CTU, despite
Petition 870190092357, of 09/16/2019, p. 37/156
31/107 this is not always the case. TUs are typically the same size or smaller than PUs (or CU partitions, for example, in the case of intraprevision). In some examples, residual samples corresponding to a CU can be subdivided into smaller units using a quadtree structure known as a residual quad tree (RQT). RQT leaf nodes can be referred to as transformation units (TUs). The pixel difference values associated with the TUs can be transformed to produce transformation coefficients that can be quantized.
[059] A CU sheet can include one or more forecast units (PUs) when forecast using the interprevision. In general, a PU represents a spatial area corresponding to all or a part of the corresponding CU, and can include data to retrieve and / or generate a reference sample for the PU. In addition, a PU includes data related to the forecast. When the CU is encoded through, one or more PUs of the CU can include data defining the motion information, such as one or more motion vectors, or the PUs can be encoded by jump mode. The data that defines the motion vector for a PU can describe, for example, a horizontal component of the motion vector, a vertical component of the motion vector, a resolution for the motion vector (for example, quarter pixel precision or precision of an eighth of a pixel), a reference image to which the motion vector points, and / or a list of reference images (for example, ListO or Listl) for the motion vector.
Petition 870190092357, of 09/16/2019, p. 38/156
32/107 [060] Leaf CUs can also be predicted by intramode. In general, intraprevision involves predicting a CU sheet (or partitions thereof) using an intramode. A video encoder can select a set of neighboring pixels, previously encoded, for the CU sheet to use to predict the CU sheet (or partitions thereof).
[061] A CU sheet can also include one or more processing units (TUs). Transformation units can be specified using an RQT (also referred to as a TU quadtree structure), as discussed above. For example, a split indicator can indicate whether a CU sheet is divided into four processing units.
[062] Furthermore, the TUs of leaf CUs are also associated with respective quadtree data structures, referred to as residual quadtrees (RQTs). That is, a CU sheet can include a quadtree indicating how the CU sheet is divided into TUs. The root node of a quadtree TU usually corresponds to a CU leaf, while the root node of a quadtree CU usually corresponds to a CTU (or LCU). RQT TUs that are not split are referred to as leaf TUs. In general, this description uses the terms CU and TU to refer to CU sheet and TU sheet, respectively, unless noted otherwise.
[063] A video sequence typically includes a series of frames or video images, starting with a random access point (RAP) image. A video sequence can include syntax data in a sequence parameter set (SPS) that characterizes the video sequence. Each slice of an image
Petition 870190092357, of 09/16/2019, p. 39/156
33/107 can include slice syntax data that describes an encoding mode for the respective slice. The video encoder 20 typically operates on video blocks within the individual video slices in order to encode the video data. A video block can correspond to a coding node within a CU. Video blocks can be fixed or variable in size, and may differ in size according to a specified encoding standard.
[064] As an example, the forecast can be performed for PUs of various sizes. Assuming that the size of a particular CU is 2N χ 2N, intraprevision can be performed in PU sizes of 2N x 2N or N χ N, and the interpretation can be performed in symmetrical sizes of PU of 2N x 2N , 2N χ N, N χ 2N or N x N. The asymmetric partition for the interpretation can also be performed for PU sizes of 2N x nU, 2N x nD, nL x 2N and nR x 2N. In the asymmetric partition, one direction of a CU is not divided while the other direction is divided by 25% and 75%. The part of the CU corresponding to 25% of the partition is indicated by an n followed by an up, down, left and right indication. Thus, for example, 2N x nU refers to a CU 2N χ 2N that is divided horizontally with a PU of 2N x 0.5N on top of a PU 2N x 1.5N at the bottom.
[065] In this description, N χ N and N by N can be used interchangeably to refer to the pixel dimensions of a video block in terms of vertical and horizontal dimensions, for example, 16 x 16 pixels or 16 by 16 pixels. In general, a 16 x 16 tile will have 16 pixels in a vertical direction (y = 16) and 16
Petition 870190092357, of 09/16/2019, p. 40/156
34/107 pixels in a horizontal direction (x = 16). Likewise, an N x N block usually has N pixels in a vertical direction and N pixels in a horizontal direction, where N represents a non-negative integer value. The pixels in a block can be arranged in rows and columns. Furthermore, blocks do not necessarily have to have the same number of pixels in the horizontal direction as in the vertical direction. For example, blocks can comprise N x M pixels, where M is not necessarily equal to N.
[066] Following intra- or inter-forecast encoding using the CUs of a CU, the video encoder 20 can calculate residual data for the CU's TUs. PUs can comprise syntax data describing a method or mode of data generation and forecasting pixel in the spatial domain (also referred to as the pixel domain) and TUs can understand coefficients in the transformation domain following the application of a transformation, for example , a discrete cosine transformation (DCT), an integer transformation, a wavelet transformation, or a transformation conceptually similar to residual video data. Residual data can correspond to pixel differences between the pixels in the uncoded image and the forecast values corresponding to the PUs. The video encoder 20 can form the TUs to include quantized transformation coefficients representative of the residual data for the CU. That is, video encoder 20 can calculate residual data (in the form of a residual block), transform the residual block to produce a block of transformation coefficients, and then quantize
Petition 870190092357, of 09/16/2019, p. 41/156
35/107 the transformation coefficients to form the quantized transformation coefficients. The video encoder 20 can form a TU including quantized transformation coefficients, in addition to other syntax information (e.g., split information for the TU).
[067] As noted, following any transformations to produce the transformation coefficients, the video encoder 20 can perform the quantization of transformation coefficients. Quantization generally refers to a process in which transformation coefficients are quantized to possibly reduce the amount of data used to represent the coefficients, providing additional compression. The quantization process can reduce the bit depth associated with some or all of the coefficients. For example, a bit value of n can be rounded down to a bit value m during quantization, where n is greater than m.
[068] Following quantization, the video encoder can digitize the transformation coefficients, producing a one-dimensional vector from the two-dimensional matrix including the quantized transformation coefficients. The scan can be designed to place the coefficients of more energy (and therefore less frequency) in front of the set and to place the coefficients with less energy (and therefore more frequency) at the bottom of the set. In some examples, video encoder 20 may use a predefined scan order to digitize the quantized transformation coefficients to produce a serialized vector that can be encoded by entropy. In other examples, the video encoder 20
Petition 870190092357, of 09/16/2019, p. 42/156
36/107 can perform adaptive scanning. After digitizing the quantized transformation coefficients to form a one-dimensional vector, video encoder 20 can entropy encode the one-dimensional vector, for example, according to the context adaptive variable length encoding (CAVL), the adaptive binary arithmetic encoding context (CABAC), adaptive syntax-based binary arithmetic coding (SBAC), probability interval partition entropy (PIPE) coding, or other entropy coding methodology. The video encoder 20 can also entropy encode the syntax elements associated with the encoded video data for use by the video decoder 30 in decoding video data.
[069] To perform CABAC, the video encoder 20 can designate a context within a context model for a symbol to be transmitted. The context can refer to, for example, whether the neighboring values of the symbol are different from zero or not. To perform CAVLC, the video encoder 20 can select a variable length code for a symbol to be transmitted. VLC code words can be constructed so that relatively shorter codes correspond to more likely symbols, while longer codes correspond to less likely symbols. Thus, the use of VLC can achieve greater bit savings, for example, in relation to the use of code words of the same length for each symbol to be transmitted. The probability determination can be based on a
Petition 870190092357, of 09/16/2019, p. 43/156
37/107 context assigned to the symbol.
[070] In general, the video decoder 30 performs a substantially similar, but alternative, process that can be performed by the video encoder 20 to decode the encoded data. For example, the video decoder 30 quantizes in an inverse way and transforms the coefficients of a received TU in an inverse way to reproduce a residual block. The video decoder 30 uses a signaled prediction mode (intra or interprevision) to form a predicted block. Then, the video decoder 30 combines the predicted block and the residual block (pixel by pixel) to reproduce the original block. Further processing can be carried out, such as performing an unlocking process to reduce visual artifacts along the block boundaries. In addition, the video decoder 30 can decode the syntax elements using CABAC in a manner substantially similar to, although alternative to, the CABAC encoding process of the video encoder 20.
[071] Video encoder 20 can additionally send syntax data, such as block-based syntax data, image-based syntax data, and sequence-based syntax data, to video 30 decoder , for example, in an image header, a block header, a slice header, or other syntax data, such as a sequence parameter set (SPS), image parameter set (BBS), or parameter set video (VPS).
[072] Figure 2 is a block diagram
Petition 870190092357, of 09/16/2019, p. 44/156
38/107 illustrating an example of video encoder 20 that can be configured to perform one or more DMVD techniques of that description. For example, video encoder 20 can be configured to apply one or more restrictions to (1) a DMVD-derived VM and / or (2) a VM difference between an initial VM and a DMVD-derived VM. When the constraint is applied to DMVD, in certain examples, only the derived movement information, which corresponds to the constraint, is considered to be valid movement information. Thus, the list of VMs and the selected final VM may be different if the constraint is used.
[073] In a first example, the constraint includes whether the derived VMs are symmetric. In a second example, the constraint includes whether the MV differences between the initial VMs and the VMs derived by the DMVD methods are symmetric. In a third example, the constraint includes whether derived VMs are antisymmetric. In a fourth example, the constraint includes whether the MV differences between the initial VMs and the VMs derived by the DMVD methods are antisymmetric. In some instances, the activation of symmetric / antisymmetric MV / MV difference constraints is flagged explicitly. In other examples, restrictions can be determined implicitly according to some encoded information. In additional examples, the conditions can be found in the constraints so that the constraint only applies to a few examples.
[074] In particular, the video encoder 20 can perform the DMVD techniques of that description during a reconstruction circuit, which includes processes performed by the reverse quantization unit 58, unit
Petition 870190092357, of 09/16/2019, p. 45/156
39/107 reverse transformation 60, and adder 62. Additionally, as discussed above, video encoder 20 can signal certain values that can assist a video decoder, such as video decoder 30, in performing the DMVD.
[075] The video encoder 20 can perform the intra-encoding and intercoding of video blocks within video slices. Intracoding is based on spatial forecasting to reduce or remove spatial redundancy in video within a given video frame or image. Intercoding is based on time forecasting to reduce or remove time redundancy in the video within the adjacent frames or images of a video sequence. The intramode (mode I) can refer to any of several space-based coding modes. The intervals, such as a one-way forecast (P mode) or double revision (B mode), can refer to any of the various time-based coding modes.
[076] As illustrated in figure 2, video encoder 20 receives a current video block within a video frame to be encoded. In the example in Figure 2, video encoder 20 includes video data memory 66, mode selection unit 40, reference image memory 64 (which can also be referred to as a decoded image store (DPB) ), adder 50, transformation processing unit 52, quantization unit 54 and entropy coding unit 56. The mode selection unit 40, in turn, includes the
Petition 870190092357, of 09/16/2019, p. 46/156
40/107 motion 44, motion estimation unit 42, intra-forecast unit 46, and partition unit 48. For video block reconstruction, video encoder 20 also includes reverse quantization unit 58, the reverse transformation unit 60 and adder 62. An unlock filter (not shown in figure 2) can also be included to filter the block boundaries to remove the blocking artifacts from the reconstructed video. If desired, the release filter would typically filter the output of adder 62. Additional filters (in loop or post loop) can also be used in addition to the unlock filter. Such filters are not illustrated for the sake of brevity, but, if desired, they can filter the output of adder 50 (as in an input circuit filter).
[077] The video data memory 66 can be configured to store the video data to be encoded by the video encoder components 20. The video data in the video data memory 101 can be obtained, for example, from the video source 18. The decoded image store 116 may be a reference image memory that stores the reference video data for use in encoding video data by video encoder 20, for example, in intra or interpretation. The video data memory 101 can be formed by any of a variety of memory devices, such as dynamic random access memory (DRAM), including synchronized DRAM (SDRAM), magneto resistive RAM (MRAM), resistive RAM ( RRAM), or other types of memory devices. Video data memory 101 can be provided by the same
Petition 870190092357, of 09/16/2019, p. 47/156
41/107 memory device or separate memory devices. In several examples, the video data memory 101 can be on chip with other components of the video encoder 20, or off the chip with respect to those components.
[078] During the encoding process, video encoder 20 receives a frame or video slice to be encoded. The frame or slice can be divided into multiple blocks of video. The motion estimation unit 42 and the motion compensation unit 44 perform the interprevision encoding of the received video block with respect to one or more blocks in one or more reference frames to provide time prediction. Intraprevision unit 46 may alternatively perform intraprevision encoding of the received video block with respect to one or more neighboring blocks in the same frame or slice as the block to be encoded to provide spatial prediction. The video encoder 20 can carry out multiple encoding passes, for example, to select a suitable encoding mode for each block of video data.
[079] Furthermore, partition unit 48 can divide blocks of video data into sub-blocks, based on the evaluation of previous partition schemes in previous encoding passages. For example, partition unit 48 can initially divide a frame or slice into CTUs, and divide each of the CTUs into sub-CUs based on the rate distortion analysis (for example, rate distortion optimization). The mode selection unit 40 can additionally produce a quadtree data structure
Petition 870190092357, of 09/16/2019, p. 48/156
42/107 indicative of the partition of a CTU into sub-CUs. Quadtree leaf node CUs can include one or more PUs and one or more TUs.
[080] The mode selection unit 40 can select one of the prediction modes, intra or inter, for example, based on the error results, and provide the resulting predicted block for the adder 50 to generate residual data and for the adder 62 to reconstruct the coded block for use as a frame of reference. The mode selection unit 40 also provides syntax elements, such as motion vectors, intramode indicators, partition information, and other similar syntax information, for the entropy coding unit 56.
[081] The motion estimation unit 42 and the motion compensation unit 44 can be highly integrated, but are illustrated separately for conceptual purposes. Motion estimation, performed by motion estimation unit 42, is the process of generating motion vectors, which estimate motion for video blocks. A motion vector, for example, can indicate the displacement of a PU from a video block within a video frame or current image with respect to a forecast block within a reference frame (or other coded unit) with respect to to the current coded block within the current frame (or another coded unit). A forecast block is a block that is considered to be very close to the block to be coded, in terms of pixel difference, which can be determined by the sum of the absolute difference (SAD), sum of the difference
Petition 870190092357, of 09/16/2019, p. 49/156
43/107 square (SSD) and other difference metrics. In some examples, the video encoder 20 can calculate the values for the sub-pixel positions of the reference images stored in the reference image memory 64. For example, the video encoder 20 can interpolate the values of the positions of a quarter of a pixel, eighth pixel positions, or other fractional pixel positions of the reference image. Therefore, the motion estimation unit 42 can perform a motion search with respect to the entire pixel positions and the fractional pixel positions and send a motion vector with fractional pixel precision.
[082] The motion estimation unit 42 calculates a motion vector for a PU of a video block in an intercodified slice by comparing the position of the PU with the position of a prediction block of a reference image. The reference image can be selected from a first reference image list (ListO) or a second reference image list (Listl), each of which identifies one or more reference images stored in the reference image memory 64. The motion estimation unit 42 sends the calculated motion vector to the entropy coding unit 56 and the motion compensation unit 44.
[083] Motion compensation, performed by motion compensation unit 44, may involve collecting or generating the forecast block based on the motion vector determined by the motion estimation unit 42. Again, the motion estimation unit
Petition 870190092357, of 09/16/2019, p. 50/156
44/107 movement 42 and the movement compensation unit 44 can be functionally integrated, in some examples. Upon receipt of the motion vector for the PU of the current video block, the motion compensation unit 44 can locate the forecast block to which the motion vector points in one of the reference image lists. Adder 50 forms a residual video block by subtracting pixel values from the forecast block from the pixel values of the current video block being encoded, forming the pixel difference values, as discussed below. In general, the motion estimation unit 42 performs the motion estimation with respect to the luminescence components, and the motion compensation unit 44 uses motion vectors calculated based on the luminescence components for both the chrominance and luminescence components. . The mode selection unit 40 can also generate syntax elements associated with the video blocks and the video slice for use by the video decoder 30
in decoding of slice video blocks of video.[084] The intra-forecast unit 46 can intraprevent a current block, as a alternative The interprevision re carried out by the estimate in movement 42 and the compensation unit movement 44, as described above. In particular, the unity in
intraprevision 46 can determine an intraprevision mode to be used to encode a current block. In some examples, the intraprevention unit 46 can encode a current block using various intraprevention modes, for example, during separate coding passages, and the
Petition 870190092357, of 09/16/2019, p. 51/156
45/107 intra-forecast unit 46 (or 40 mode selection unit, in some examples) can select a suitable intra-forecast mode to be used for the tested modes.
[085] For example, the intraprevention unit 46 can calculate rate distortion values using a rate distortion analysis for the various tested intraprevention modes, and select the intraprevention mode having the best rate distortion characteristics among the modes tested. Rate distortion analysis generally determines an amount of distortion (or error) between an encoded block and an original uncoded block that was encoded to produce the encoded block, in addition to a bit rate (that is, a number of bits) used to produce the coded block. Intraprevention unit 46 can calculate distortion ratios and rates for the various encoded blocks to determine which intraprevention mode displays the best rate distortion value for the block.
[086] After selecting an intraprevention mode for a block, the intraprevention unit 46 can provide information indicative of the intraprevention mode selected for the block for the entropy coding unit 56. The entropy coding unit 56 can encode the information indicating the selected intra-forecast mode. The video encoder 20 may include in the transmitted bit stream, configuration data which may include a plurality of intra-forecast mode index tables and a plurality of modified intra-predict mode index tables
Petition 870190092357, of 09/16/2019, p. 52/156
46/107 (also referred to as codeword mapping tables), definitions of coding contexts for multiple blocks, and indications of a more likely intraprediction mode, an intraprediction mode index table, and a mode index table modified intraprevision for use in each context.
[087] Video encoder 20 forms a residual video block by subtracting forecast data from the mode selection unit 40 from the original video block being encoded. The adder 50 represents the component or components that perform this subtraction operation. The transformation processing unit 52 applies a transformation, such as a discrete cosine transformation (DCT) or a conceptually similar transformation, to the residual block, producing a video block comprising values of transformation coefficients. Wavelet transformations, integer transformations, subband transformations, discrete sine transformations (DSTs), or other types of transformations can be used instead of a DCT. In any case, the transformation processing unit 52 applies the transformation to the residual block, producing a block of transformation coefficients. The transformation can convert residual information from a pixel domain into a transformation domain, such as a frequency domain. The transformation processing unit 52 can send the resulting transformation coefficients to the quantization unit 54. The quantization unit 54 quantizes the transformation coefficients to further reduce the bit rate. The quantization process 54
Petition 870190092357, of 09/16/2019, p. 53/156
47/107 quantizes the transformation coefficients to further reduce the bit rate. The quantization process can reduce the bit depth associated with some or all of the coefficients. The degree of quantization can be modified
by fit of a parameter quantization. [088] Following the quantization, the unity in coding per entropy 56 encode by entropy the coefficients in transformation quantized. For example, The unity of codi entropy 56 can accomplish The
context adaptive variable length encoding (CAVLC), context adaptive binary arithmetic encoding (CABAC), syntax based adaptive binary arithmetic encoding (SBAC), entropy encoding by probability interval division (PIPE) or other entropy coding technique. In the case of context-based entropy coding, the context can be based on neighboring blocks. Following entropy coding by entropy coding unit 56, the encoded bit stream can be transmitted to another device (e.g., video decoder 30) or archived for later transmission or retrieval.
[089] The reverse quantization unit 58 and the reverse transformation unit 60 apply reverse quantization and reverse transformation, respectively, to reconstruct the residual block in the pixel domain. In particular, adder 62 adds the reconstructed residual block to the compensated motion prediction block produced earlier by the motion compensation unit 44 or interpreter unit 46 for
Petition 870190092357, of 09/16/2019, p. 54/156
48/107 produce a reconstructed video block for storage in the reference image memory 64. The reconstructed video block can be used by the motion estimation unit 42 and motion compensation unit 44 as a reference block to intercode a block in a subsequent video frame.
[090] Figure 3 is a block diagram illustrating an example of video decoder 30 that can be configured to perform one or more DMVD techniques of that description. For example, video decoder 30 can be configured to apply one or more restrictions to (1) a DMVD-derived MV, and / or (2) a VM difference between an initial VM and a DMVD-derived MV. When a constraint is applied to the DMVD, in certain examples, only the derived movement information, which corresponds to the constraint, is considered to be valid movement information. Thus, the list of VMs and the selected final VM can be different if the constraint has not been used.
[091] In a first example, the constraint includes whether the derived VMs are symmetric. In a second example, the constraint includes whether the MV differences between the initial VMs and the VMs derived by the DMVD methods are symmetric. In a third example, the constraint includes whether derived VMs are antisymmetric. In a fourth example, the constraint includes whether the MV differences between the initial VMs and the VMs derived by the DMVD methods are antisymmetric. In some examples, the activation of MV restrictions / symmetric / antisymmetric MV differences is explicitly flagged. In other examples, restrictions can be determined implicitly according to
Petition 870190092357, of 09/16/2019, p. 55/156
49/107 with some coded information. In certain examples, conditions may be imposed on restrictions so that the restriction only applies to a few examples.
[092] In the example of figure 3, the video decoder 30 includes the video data memory 68, an entropy decoding unit 70, a motion compensation unit 72, an intraprevision unit 74, an inverse quantization unit 76, reverse transformation unit 78, reference image memory 82 and adder 80. The video decoder 30 may, in some instances, perform a decoding pass generally alternating with the encoding pass described with respect to the video encoder 20 (figure 2) . The motion compensation unit 72 can generate forecast data based on the motion vectors received from the entropy decoding unit 70, while the intraprevision unit 74 can generate forecast data based on the intraprediction mode indicators received from the drive unit. entropy decoding 70.
[093] The video data memory 68 can store the encoded video data, such as an encoded video bit stream, to be decoded by the video decoder components 30. The video data stored in the video data memory 68 can be obtained, for example, from the computer-readable medium 16, for example, from a local video source, such as a camera, through wired or wireless network communication of the video data, or by access to the physical data storage medium. The video data memory 68 can form an encoded image store
Petition 870190092357, of 09/16/2019, p. 56/156
50/107 (CPB) which stores the encoded video data from an encoded video bit stream. The reference image memory 82 can be a memory that stores the reference video data for use in decoding video data by the video decoder 30, for example, in intra or interpreter modes, or for sending. The video data memory 68 and the reference image memory 82 can be formed by any of a variety of memory devices, such as DRAM), including SDRAM, MRAM, RRAM, or other types of memory devices. The video data memory 68 and the reference image memory 82 can be provided by the same memory device or separate memory devices. In several examples, the video data memory 68 may be on the chip with other components of the video decoder 30 or off the chip with respect to those components.
[094] Video data memory 68 receives and stores encoded video data (for example, NAL units) of a bit stream. The entropy decoding unit 70 can receive the encoded video data (e.g., NAL units) from the video data memory 68 and can analyze the NAL units for syntax elements. The entropy decoding unit 70 can entropy decode the entropy encoded syntax elements in the NAL units. During the decoding process, the video decoder 30 receives an encoded video bit stream that represents the video blocks of an encoded video slice and associated syntax elements from the encoder
Petition 870190092357, of 09/16/2019, p. 57/156
51/107 of video 20. The entropy decoding unit 70 of the video decoder 30 entropy decodes the bit sequence to generate the quantized coefficients, motion vectors or intraprevention mode indicators and other syntax elements. The entropy decoding unit 70 sends the motion vectors to and other syntax elements to the motion compensation unit 72. The video decoder 30 can receive the syntax elements at the video slice level and / or block level of video.
[095] When the video slice is encoded as an intra-coded slice (I), the intraprevision unit 74 can generate forecast data for a video block of the current video slice based on a signaled intraprediction mode and block data previously decoded from the current frame or image. When the video frame is encoded as an intercoded slice (i.e., B or P), the motion compensation unit 72 produces forecast blocks for a video block of the current video slice based on the motion vectors and other elements of syntax received from the entropy decoding unit 70. The forecast blocks can be produced from one of the reference images within one of the reference image lists. The video decoder 30 can build the reference frame lists, ListO and Listl, using standard construction techniques based on the reference images stored in the reference image memory 82. The motion compensation unit 72 determines the forecast information for a video block of the current video slice by analyzing the vectors of
Petition 870190092357, of 09/16/2019, p. 58/156
52/107 motion and other syntax elements, and uses the forecast information to produce the forecast blocks for the current video block being decoded. For example, the motion compensation unit 72 uses some of the syntax elements received to determine a prediction mode (for example, intraprevision, interprevision) used to encode the video blocks of the video slice, a type of interpretation slice ( for example, slice B or slice P), construction information for one or more reference image lists for the slice, motion vectors for each slice's intercodified video block, interpretation situation for each slice's intercodified video block, and other information to decode the video blocks in the current video slice.
[096] The motion compensation unit 72 can also perform interpolation based on the interpolation filters. The motion compensation unit 72 can use interpolation filters as used by the video encoder 20 during the encoding of the video blocks to calculate the interpolated values for the sub-whole pixels of the reference blocks. In that case, the motion compensation unit 72 can determine the interpolation filters used by the video encoder 20 from the received syntax elements and use the interpolation filters to produce the forecast blocks.
[097] The unity inverse quantization 76 quantize conversely, that is, it disquantifies, the coefficients of transformation quantized provided at
Petition 870190092357, of 09/16/2019, p. 59/156
53/107 bit sequence and decoded by the entropy decoding unit 70. The reverse quantization process may include the use of a quantization parameter QP Y calculated by the video decoder 30 for each video block in the video slice to determine a degree of quantization and, likewise, a degree of inverse quantization that must be applied.
[098] Inverse transformation unit 78 applies an inverse transformation, for example, an inverse DCT, an inverse integer transformation or an inverse transformation process conceptually similar to the transformation coefficients in order to produce residual blocks in the pixel domain.
[099] After the motion compensation unit 72 generates the forecast block for the current video block based on the motion vectors and other syntax elements, the video decoder 30 forms a video block decoded by the sum of the blocks residuals from the reverse transformation unit 78 with the corresponding forecast blocks generated by the motion compensation unit 72. The adder 80 represents the component or components that perform this sum operation. If desired, the unlocking filter can also be applied to filter out the decoded blocks in order to remove the blocking artifacts. Other circuit filters (in the encoding circuit or after the encoding circuit) can also be used to smooth out pixel transitions, or otherwise improve video quality. The video blocks decoded into a specific frame or image are then stored in the
Petition 870190092357, of 09/16/2019, p. 60/156
54/107 reference image memory 82, which stores the reference images used for subsequent motion compensation. The reference image memory 82 also stores the decoded video for later display on a display device, such as the display device 32 of Figure 1.
[0100] According to the techniques of that description, a video encoder, such as video encoder 20 and video decoder 30, can perform DMVD to derive motion information for a current block of video data. In particular, these techniques can include any or all of the following techniques, alone or in any combination.
[0101] One of the concepts in this description is to improve the DMVD. The techniques are elaborated on several different aspects highlighted as discussed below. The following techniques for improving DMVD can be applied individually. Alternatively, any combination of the techniques described in these descriptions can be applied. The following DMVD techniques, applied individually or in any combination, can increase encoding efficiency and / or reduce the bit rate. For example, restricting (1) a VM derived by DMVD, and / or (2) a difference in VM between an initial VM and a VM derived by DMVD can increase encoding efficiency and / or reduce the bit rate. In each of the examples above, restrictions can be applied based on a condition.
[0102] In HEVC, the largest coding unit in a slice is called the coding tree block (CTB) or the coding tree unit (CTU). A CTB
Petition 870190092357, of 09/16/2019, p. 61/156
55/107 contains a quadtree, the nodes of which are coding units. The size of a CTB can be in the range of 16 x 16 to 64 x 64 in the main HEVC profile (although technically 8 x 8 CTB sizes can be supported). A coding unit (CU), however, can be the same size as a CTB and as small as 8 x 8. Each coding unit is coded with a mode. When a CU is intercodified, it can be further divided into 2 or 4 forecast units (PUs), or become just a PU when an additional partition does not apply. When two PUs are present in a CU, they can be half-size rectangles or two rectangles with an M or CU size. When the CU is intercodified, a set of movement information is present for each PU. In addition, each PU is coded with a unique interpretation mode to derive the set of movement information.
[0103] In the HEVC standard, there are two interpretation modes, called mixed motion vector prediction modes (jump is considered a special mixing case) and advanced (AMVP) respectively for a prediction unit (PU). In any AMVP or mix mode, a motion vector candidate (MV) list is maintained for multiple motion vector predictors. The motion vectors, in addition to the reference indexes in the mixing mode, of the current PU, are generated by choosing a candidate from the list of MV candidates.
[0104] The MV candidate list contains up to 5 candidates for mixing mode and only two candidates for AMVP mode. A candidate for mixing may contain a
Petition 870190092357, of 09/16/2019, p. 62/156
56/107 set of motion information, for example, motion vectors corresponding to both the reference image lists (ListO and Listl) and the reference indexes. If a candidate for mixing is identified by a mixing index, reference images are used to forecast the current blocks, in addition to the associated motion vectors that are determined. However, under the AMVP mode for each potential forecast direction of ListO or Listl, a reference index needs to be flagged explicitly, along with an MV forecast index (MVP) for the list of MV candidates as the candidate AMVP contains only one motion vector. In AMVP mode, predicted motion vectors can be further refined. As can be seen above, a candidate for the mix corresponds to an entire set of motion information while an AMVP candidate contains only one motion vector for a specific forecast direction and benchmark. Candidates for both modes are similarly derived from the same spatially or temporally neighboring blocks.
[0105] The concept of DVD techniques is for a video encoder (for example, video encoder 20 or video decoder 30) to derive motion information, such as motion vectors and forecast directions, using the information previously decoded. As used here, the acronym MV stands for motion vector. ListO and Listl are two lists that are constructed as image lists in the decoded image store (DPB) or reference image memory 82 (of figure 3). An index called
Petition 870190092357, of 09/16/2019, p. 63/156
57/107 reference image index is used to identify a particular image in one of these lists. For the single forecast, an image can be selected from any of these lists. For double forecasting, two images are selected, one from each list (for example, one from ListO and one from Listl). In current approaches, ListV and Listl MVs derived by DMVD are determined independently for some DMVD techniques, such as Bilateral Template Combination and Frame Rate Up Conversion Template (FRUC) Combination. In this description, when derivating dual prediction VMs (for example, a pair of VMs including a ListO MV and a ListL MV) based on the initial MVs, a symmetric / antisymmetric MV constraint and / or symmetric and / or MV difference or antisymmetric can be applied. In some examples, more than one constraint can be applied, such as applying a symmetric MV constraint and a symmetric MV difference constraint. A constraint can include one or more conditions. In some examples, when a constraint is applied to DMVD (for example, by applying a constraint to an MV and / or difference VM derived from DMVD), only the derived motion information, which corresponds (for example, passes) to the constraint can be considered valid movement information. For example, a DMVD-derived VM that matches (for example, passes) a constraint can be considered a valid VM, and a DMVD-derived VM that does not match the constraint can be considered an invalid VM. As another example, a difference in VM derived from DMVD that corresponds to a constraint can be considered a
Petition 870190092357, of 09/16/2019, p. 64/156
58/107 valid MV difference, and a DM difference derived from DMVD that does not match the constraint can be considered an invalid MV difference. In some examples, a video encoder (for example, video encoder 20 or video decoder 30) can be configured to use valid motion vector information to encode video data (for example, a video data block). current video) and do not use invalid motion vector information to encode the video data (for example, a current video data block). In some examples, the valid motion vector information can then be compared with other valid motion vector information and the valid motion vector information determined to have the lowest cost metric is selected.
[0106] Candidates for space MV are derived from the neighboring blocks illustrated in Figure 4, for a specific PU (PU0), although the methods for generating candidates from the blocks differ for mixing and AMVP modes. In mixing mode, up to four spatial MV candidates can be derived with the orders illustrated in figure 4A with numbers, and the order being as follows: left (0, Al), above (1, Bl), right and above (2 , B0), below and to the left (3, A0), and above and to the left (4, B2), as illustrated in figure 4A.
[0107] In an AVMP mode, neighboring blocks are divided into two groups: left group consisting of block 0 and block 1, and the above group consisting of blocks 2, 3 and 4, as shown in figure 4B. For each group, the potential candidate in a neighboring bloc regarding the
Petition 870190092357, of 09/16/2019, p. 65/156
59/107 same reference image as the one indicated by the flagged reference index has the highest priority to be chosen to form a final candidate of the group. It is possible that all neighboring blocks do not contain a motion vector pointing to the same reference image. Therefore, if such a candidate cannot be found, the first available candidate will be scaled to form the final candidate, in this way, differences in temporal distance can be compensated.
[0108] Time motion vector predictor (TMVP) candidates, if enabled and available, are added to the MV candidate list after spatial motion vector candidates. The motion vector derivation process for the TMVP candidate is the same for both mixing and AMVP modes, however, the target reference index for the TMVP candidate in the mixing mode can always be set to 0. The location of the primary block for the derivation of the TMVP candidate is the lower right block outside the PU of the same location, as illustrated in figure 5A as a T block, to compensate for the orientation to the upper and left blocks used to generate neighboring spatial candidates. However, if that block is located outside the current CTB row or movement information is not available, the block will be replaced with a central block from the PU.
[0109] A motion vector for the TMVP candidate is derived from the PU of the same location as the image of the same location, indicated at the slice level. The motion vector for the PU of the same location is called the MV of
Petition 870190092357, of 09/16/2019, p. 66/156
60/107 same location. Similar to the direct temporal mode in stroke, to derive the motion vector candidate for TMVP, the MV of the same location needs to be scaled to compensate for differences in temporal distance, as illustrated in the figure
5.
[0110] Various aspects of the mixing mode and the AMVP mode are discussed below.
[0111] Motion vector scaling: It is considered that the value of motion vectors is proportional to the distance of the images in the presentation time. A motion vector associates two images, the reference image, and the image containing the motion vector (that is, the containment image). When a motion vector is used to predict the other motion vector, the distance from the containment image and the reference image is calculated from the Image Order Count (POC) values.
[0112] For a motion vector to be predicted, both its containment images and associated reference images may be different. Therefore, a new distance (based on PIC) is calculated. And the motion vector is scaled based on these two POC distances. For a neighboring spatial candidate, the containment images for the two motion vectors are the same, while the reference images are different. In HEVC, motion vector scaling applies to both TMVP and AMVP for neighboring spatial and temporal candidates.
[0113] Generation of candidates for artificial motion vector: If a list of candidates for motion vector is not complete (that is, it is less than one
Petition 870190092357, of 09/16/2019, p. 67/156
61/107 maximum predetermined number of candidates), candidates for artificial motion vector are generated and inserted at the end of the list until there are all candidates.
[0114] In mixing mode, there are two types of artificial MV candidates: combined candidate derived only for slices B and zero candidates used only for AMVP, if the first type does not provide enough artificial candidates.
[0115] For each pair of candidates that is already on the candidate list and has the required motion information, the bidirectional combined motion vector candidates are derived by a combination of the first candidate's motion vector for an image in ListO and the motion vector of a second candidate with reference to an image in the Listl.
[0116] Candidate insertion preparation process: Candidates from different blocks can appear at the same time, which reduces the efficiency of a candidate list for the / AMVP mix. A training process is applied to solve this problem. Compare one candidate with the other in the current candidate list to avoid entering an identical candidate to a certain extent. To reduce complexity, only limited numbers of the preparation processes are applied, instead of comparing each potential candidate with all other existing candidates.
[0117] In an example from the JEM reference software, there are several intercoding tools that derive or refine the motion vector (MV) for a current block on the decoder side. These DMVD approaches are
Petition 870190092357, of 09/16/2019, p. 68/156
62/107 elaborated as follows.
[0118] Figures 6 and 7 are conceptual diagrams illustrating the concepts for derivation of combined pattern motion vector (PMMVD). PMMVD mode is a special blending mode based on Upward Conversion Rate (FRUC) techniques. With this mode, the movement information of a block is not signaled, but is derived on the decoder side. This technology was included in a JEM example.
[0119] A FRUC indicator is signaled to a CU when its mixing indicator is true. When the FRUC indicator is false, a mixing index is signaled and regular mixing mode is used. When the FRUC indicator is true, an additional FRUC mode indicator is signaled to indicate which method (bilateral combination or template combination) should be used to derive movement information for the block.
[0120] During the motion derivation process, an initial motion vector is first derived for the entire CU based on the bilateral combination or template combination. First, the CU mix list, or the so-called PMMVD seeds, is checked and the candidate that results in the lowest combination cost (for example, a rate distortion cost (RD)) is selected as the starting point. Then, a local search based on the bilateral combination or the template combination around the starting point is performed and the MV that results in the lowest combination cost is considered the MV for the entire CU. Subsequently, the movement information is further refined at the sub-block level with the
Petition 870190092357, of 09/16/2019, p. 69/156
63/107 CU motion vectors derived as starting points.
[0121] According to the present techniques of that description, restrictions can be applied to CU motion vectors derived based on whether, for example, the MV derived by DMVD is symmetric or antisymmetric, and / or (2) a difference in MV between an initial MV and a DMVD-derived VM is symmetric or antisymmetric. In each of the examples above, restrictions can be applied based on a condition, for example, around the initial VMs or derived VMs.
[0122] As illustrated in figure 6, the bilateral combination is used to derive the movement information from the current block (Cur), finding the best combination between two reference blocks (Ro and Ri) along the movement path of the block. current in two different reference images (RefO and Refl). The movement path can include the path that a pixel in a block follows through space and time when considering a sequence of images (eg reference frames and the current frame) as a continuous three-dimensional space-time field. Under the consideration of a continuous motion path, the motion vectors MVO and MV1 pointing to the two reference blocks (Rq and Ri) are proportional to the time distances between the current image (Cur) and the two reference images (RefO and Refl). Derived MVs 600 and 602 are derived using bilateral combination and point to the reference blocks R'o and R'i, respectively. As a special case, when the current image (Cur) is temporally between the two reference images (RefO and Refl) and the temporal distance of the
Petition 870190092357, of 09/16/2019, p. 70/156
64/107 current image for the two reference images is the same, the bilateral combination becomes a mirrored bidirectional MV. Consequently, the derived motion vectors 600 and 602 are spread out in a similar manner.
[0123] As illustrated in figure 7, the template combination is used to derive the movement information from the current block (Cur) by finding the best combination between a template (upper and / or left neighboring blocks of the current block) in the current image and a block (same size as the template) in a reference image (RefO and Refl). A template can include neighboring pixels of a block that is used to compare a block of interest (Cur) with the candidate references (Ro with MV0 and Ri with MV1) or derived references (R'o with MV 700 and R'i with MV 702) looking for neighboring blocks of Ro and Ri. The most similar reference is then used as the forecast.
[0124] In video encoder 20, the decision to use FRUC mixing mode for a CU is based on the selection of RD cost as done for a candidate for normal mixing. That is, the two combination modes (bilateral combination and template combination) are both checked for a CU by using RD cost selection. What leads to the lowest cost is additionally compared to other CU modes. If a FRUC combination mode is the most efficient, the FRUC indicator is set to true for CU and the related combination mode is used.
[0125] On the 5th. JVET, Enhanced Template Matching in FRUC Mode, JVET-E0035, available at
Petition 870190092357, of 09/16/2019, p. 71/156
65/107 http: //phenix.it-sudparis.eu/j vet /, was proposed to further improve the FRUC template combination. A flowchart of an illustrative FRUC template matching mode is illustrated in figure 8. In the first step, a template T o (and its corresponding MVO motion information) matches the current template Tc of the current block from the reference images of the listO. In the second step, the Ti template (and its corresponding movement information MV1) is considered from the listl reference images. The movement information obtained from MVO and MV1 is used to perform the double forecast to generate the current block predictor.
[0126] The FRUC template matching mode can be improved by introducing the combination of bidirectional template and adaptive selection between single and double forecast. Illustrative changes related to figure 8 are highlighted in figure 9.
[0127] The combination of bidirectional template can be implemented based on the combination of unidirectional template. As illustrated in figure 8, a combined template T o is first found in the first template matching step from the reference images ListO (800). Note that ListO here is considered just an example. In fact, if the ListO or Listl used in the first stage is adaptive to the initial distortion cost between the current template and the initial template in the corresponding reference image. The initial template can be determined with the initial movement information of the current block that is available before performing the first template combination. The list of
Petition 870190092357, of 09/16/2019, p. 72/156
66/107 reference images corresponding to the minimum initial template distortion cost will be used in the first template matching step. For example, if the initial template distortion cost corresponding to ListO is not greater than the cost corresponding to Listl, ListO is used in the first template combination step and Listl is used in the second step), then the current template Tc the current block is updated as follows:
T'c = 2 * Tc - T o [0128] The current updated template T'c, instead of the current template Tc, is used to find another TI combined template from the Listl reference images in the second template combination (802 ). As a result, the combined template Ti is found by the joint use of the reference images ListO and Listl (804). This matching process is called bidirectional template matching.
[0129] The selection between the single forecast and the double forecast for the motion compensation forecast (MCP) can be based on the model combination distortion. As illustrated in figure 9, during the template combination, distortion between the T- and Tc template (the current template) can be calculated as costO (900), the current template can be updated (902), and the distortion between the template Ti and T'c (the current updated template) can be calculated as costl (904). If costO is less than 0.5 * costl (906), singular prediction based on MV0 can be applied to the FRUC template matching mode (908); otherwise, the double forecast based on MV0 and MV1 is applied (910). Note that costO is compared to 0.5 * costl
Petition 870190092357, of 09/16/2019, p. 73/156
67/107 since costl indicates a difference between the T 2 and T'c template (the current updated template), which is 2 times the difference between Tc (the current template) and its 0.5 * forecast (T o + Ti). It is noted that MCP can be applied to PU level movement refinement. The refinement of sub-PU level movement can be kept unchanged.
[0130] According to the techniques of that description, the video encoder 20 and video decoder 30 can restrict the motion vectors derived from the FRUC template combination mode (both uni and bidirectional) at the PU level or sub-level. PU based on whether (1) the constraint includes whether the derived VMs are symmetric, (2) whether the MV differences between the initial VMs and the VMs derived by the DMVD methods are symmetric, (3) whether the derived VMs are antisymmetric and / or (4) whether the MV differences between the initial VMs and the VMs derived by the DMVD methods are antisymmetric. Conditions can be imposed on restrictions so that the restriction applies only based on the initial VMs or FRUC template.
[0131] Figure 10 is a conceptual diagram illustrating concepts related to bidirectional optical flow in a JEM example. The Bidirectional Optical flow (BIO) is a refinement of movement in the pixel sense that is performed on top of the motion compensation in the block sense in a case of double forecasting. Since BIO compensates for fine movement within the block, activating BIO results in increasing the block size for motion compensation. The refinement of sample level movement does not require an exhaustive search or signaling, since there is an explicit equation that
Petition 870190092357, of 09/16/2019, p. 74/156
68/107 provides the fine motion vector for each sample.
[0132] Let I <k) be the luminescence value starting from the reference k (k = 0, 1) after the compensation block movement, and | ôx., dl (k) / d Y are horizontal and vertical components of the gradient I <k) , respectively. Assuming that the optical flow is valid, the motion vector field (v x , v y ) is provided by an equation âl (k) | ât + Vx dl (k) / dx + vy âl (k) / ây = 0 (1) [0133] Combining the optical flow equation with the Hermite interpolation for the movement trajectory of each sample allows to obtain a singular polynomial of third order that combines both function values I <k) and derivations | dx, dl (k) / d Y at the ends. The value of this polynomial with t = 0 is the BIO prediction:
Pred B io = 1/2. (I <0) + 1 (1) + vx | 2 · (τι <3ΐ (1) / <3χ-τ0 <3ΐ <0) / <3x) + vy / 2 · (Ti <3l (1) / õyT05l (0) / dy)) · (2) [0134 ] Here, To and Ti denote the distance to the reference frames as illustrated in figure 10. The distances τ 0 and Ti are calculated based on the POC for Ref0 and Ref1:
To = POC (current) -POC (RefO), Ti = POC (Ref1) -POC (current). If both forecasts come from the same time direction (both from the past or both from the future) then the signals are different To · Ti <0. In this case, BIO is applied only if the forecast does not come from the same time point (το Ti), both regions mentioned have different movement from
Petition 870190092357, of 09/16/2019, p. 75/156
69/107 zero (MVxq, MVy 0 , MVxi, MVy 2 Ά 0) and the block movement vectors are proportional to the time distance (MVx 0 / MVxi = MVyo / MV yi = -To / τι).
[0135] The motion vector field (v x , v y ) is determined by minimizing the difference Δ between the values at points A and B (intersection of the motion path and reference frame planes in figure 10). The model uses only the first linear term of the local Taylor expansion for Δ:
Δ = (I <0) -I (1) o + vx (Ti <3l (1) / <3χ + τ0 <3ΐ <0) / <3x) + vy (τι <3ΐ (1) / <3y + TO <3l <0) / 6y)) (3) [0136] All values in (1) depend on the sample location (i T , j '), which has been optimized so far. Assuming that the movement is consistent in the surrounding location, minimizing Δ within the square window Ω (2M +1) χ (2M + 1) centered at the currently predicted point (i, j):
(v x , vj = argmin ( 4 )
WAv [f ítn [0137] For this optimization problem, a simplified solution is used, creating the first minimization in the vertical direction and then in the horizontal direction. Results in - (sj + r)> m clip3 Ç — thBIO, thBIO ,; θ (5)
- (% + r)> m clíp3 Ç-thBIO, thBIO, -: 0 (6) where,
Petition 870190092357, of 09/16/2019, p. 76/156
70/107 .S '- £ (^ / *''/& + , Λ'. ::: ^ (/ 5) ... / ^^^ 0 / ^ 4 - ^^ / ^ 1 ij-pi 3 <
= Σ (^ / õx + η, õ ^ / õxfpdl ^ / dy + r 0 ( / <Β) / ^ 1 (7)
5Ρ <
λ 5 = ν (η ô / ^ + ã ^ W ^ - + h'Tfi 'h'.j jiíkA [0138] In order to avoid division by zero or by a very small value, the regularization parameters rem are introduced in equations (2), (3).
r = 500 · 4 d ~ 8 (8) m = 700 · 4 d ~ 8 (9) [0139] Here d is the internal bit depth of the input video.
[0140] In some instances, MV BIO refinement may be unreliable due to noise or irregular movement. Therefore, in BIO, the magnitude of the MV refinement is restricted to a certain limit (thBIO). The threshold value is determined based on whether all reference images in the current image all come from one direction. If all reference images of the current images in the current image are from one direction, the threshold value is set to 12 x 2 14 ~ d , otherwise it is set to 12 x 2 13 ~ d .
[0141] Gradients for BIO are calculated at the same time with motion compensation interpolation using operations consistent with the HEVC motion compensation process (separable finite impulse response in 2D (FIR)). The entry for this separable FIR in 2D is the same sample of reference frame as that of the fractional position and motion compensation process (fracX, fracY), according to the fractional part of the block movement vector. In the case of the horizontal gradient, the
Petition 870190092357, of 09/16/2019, p. 77/156
71/107 dl / dx signal interpolated first vertically using BIOfilterG corresponding to the fractional position fracY with the change of de-scaling d-8, then the gradient filter BIOfilterG is applied in the horizontal direction corresponding to the fractional position weakened with the change of de -scaling 18d. In the case of the vertical gradient c T / c Y, the first gradient filter is applied vertically using BIOfilterG corresponding to the fractional position fracY with the change of de-scaling d-8, then the signal displacement is performed using BIOfilterG in the horizontal direction corresponding to the fractional position fracX with de-scaling change by 18-d. The length of the interpolation filter for calculating BIOfilterG gradients and BIOfilterF signal offset is shorter (6 outputs) in order to maintain reasonable complexity. Table 1 illustrates the filters used to calculate gradients for different fractional positions of the BIO block movement vector. Table 2 illustrates the interpolation filters used to generate the forecast signal in the BIO.
[0142] Figure 11 is a conceptual diagram illustrating an example of the gradient calculation for an 8 x 4 block. For an 8 x 4 block, a video encoder collects the compensated motion predictors and calculates the horizontal / vertical gradients (HOR / VER) of all pixels within a current block, as well as two outer lines of the pixels, since solving v x and ev y for each pixel requires the HOR / VER gradient values and the pixel compensated motion predictors, inside window Ω, centered on each pixel as illustrated in equation (4). And, in a JEM example, the size of that window is
Petition 870190092357, of 09/16/2019, p. 78/156
72/107 set to 5 x 5. Therefore, the video encoder (for example, video encoder 20 and / or video decoder 30) collects the compensated motion predictors and calculates the gradients for the two outer lines of the surrounding pixels points A and B.
Table 1: Filters for calculating BIO gradients
fractional pixel position interpolation filter for the gradient (BIOfilterG) 0 {8, -39, -3, 46, -17, 5} 1/16 {8, -32, -13, 50, -18, 5} 1/8 {7, -27, -20, 54, -19, 5} 3/16 {6, -21, -29, 57, -18, 5}{4, -17, -36, 60, -15, 4} 5/16 {3, -9, -44, 61, -15, 4} 3/8 {1, -4, -48, 61, -13, 3} 7/16 {0, 1, -54, 60, -0, 2} 1/2 {1, 4, -57, 57, -4, -1}
Table 2: Interpolation filters for generating the forecast signal in BIO
Fractional pixel position interpolation filter for the forecast signal (BlOfilterS) 0 {0, 0, 64, 0, 0, 0} 1/16 {1, -3, 64, 4, -2, 0} 1/8 {1, -6, 62, 9, -3, 1} 3/16 {2, -8, 60, 14, -5, 1}{2, -9, 57, 19, -7, 2} 5/16 {3, -10, 53, 24, -8, 2} 3/8 {3, -11, 50, 29, -9, 2} 7/16 {3, -11, 44, 35, -10, 3} 1/2 {1, -7, 38, 38, -7, 1}
[0143] In the JEM examples, BIO is applied to all predicted blocks in a bidirectional way when the two predictions are from different reference images. When local lighting compensation (LIC) is activated
Petition 870190092357, of 09/16/2019, p. 79/156
73/107 for a CU, BIO is disabled.
[0144] According to the techniques of that description, video encoder 20 and video decoder 30 can restrict motion vectors derived from BIO based on whether (1) the constraint includes whether derived MVs are symmetric, (2) whether the MV differences between the initial VMs and the VMs derived by the DMVD methods are symmetric, (3) whether the derived VMs are antisymmetric and / or (4) whether the MV differences between the initial VMs and the derived VMs DMVD methods are antisymmetric. Conditions can be imposed on restrictions so that the restriction only applies based on the initial VMs.
[0145] Figure 12 is a conceptual diagram illustrating the concepts related to the proposed decoder side motion vector (DMVD) derivation based on the bilateral template combination. A video encoder can generate a bilateral template as the weighted combination of two forecast blocks (Ro and Ri), from the initial MV0 of ListO and MV1 of Listl, respectively, as illustrated in figure 12. In one example, a template bilateral can be generated by performing the average of the reference blocks (Ro and Ri) of ListO and Listl using the formula: (R0 + Rl) >> 1 or (R0 + Rl) / 2.
[0146] The template matching operation includes calculating the cost measurements between the generated template and the sample region (around the initial forecast block) in the reference image. For each of two reference images (Ro and Ri), the MV that results in a minimum template cost is considered the updated MV
Petition 870190092357, of 09/16/2019, p. 80/156
74/107 of this list to replace the initial MV (ListO MVO or Listl MV1). Finally, the two new MVs, that is, MVO 'and MV1', as illustrated in figure 12, are used for the regular double forecast. As it is commonly used in the estimation of block combination movement, the sum of absolute differences (SAD) is used as the cost measure.
[0147] Decoder side motion vector (DMVD) derivation can be applied to the dual prediction mix mode with one of the reference image in the past and one of the reference image in the future, without transmitting the additional syntax. In JEM 4.0, when a candidate for the sub-CU, LIC, Affine, or FRUC mix is selected for a CU, the DMVD is not applied.
[0148] According to the techniques of this description, video encoder 20 and video decoder 30 can restrict the motion vectors derived from the bilateral DMVD-based template combination, based on whether (1) the restriction includes whether the derived VMs are symmetric, (2) whether the MV differences between the initial VMs and the VMs derived by the DMVD methods are symmetric, (3) whether the derived VMs are antisymmetric, and / or (4) whether the differences in MV MV between the initial VMs and the VMs derived by the DMVD methods are antisymmetric. Conditions can be imposed on restrictions so that the restriction only applies based on the initial VMs or bilateral feedback.
[0149] Figures 13A and 13B are conceptual diagrams illustrating the concepts related to
Petition 870190092357, of 09/16/2019, p. 81/156
75/107 overlapping block motion compensation (OBMC) in JEM examples. OBMC has been used for previous generations of video standards, for example, as in H.263. In the JEM examples, OBMC is performed for the Compensated Motion (MC) block limits except the right and bottom limits of a CU. In addition, it is applied to both luminescence and chrominance components. In a JEM example, an MC block corresponds to an encoding block. When a CU is encoded with the sub-CU mode (including a sub-CU, Affine and FRUC mix mode), each sub-block of the CU is an MC block. To process CU limits evenly, OBMC is performed at the subblock level for all MC block limits, where the subblock size is set to 4 x 4, as shown in figures 13A and 13B.
[0150]
Video encoder 20 and video decoder 30 can apply OBMC to the current sub-block, in addition to current motion vectors, motion vectors from four connected neighboring sub-blocks, if available, and are not identical to the current motion vector , are also used to derive the forecast block for the current sub-block. These multiple forecast blocks based on multiple motion vectors are combined to generate the final forecast signal for the current subblock.
[0151]
Figures 14A to 14D are conceptual diagrams illustrating the OBMC weights. Figures 14A to 14D illustrate a prediction block based on motion vectors of a neighboring sub-block denoted as P N , with N indicating an index for the neighboring sub-blocks above
Petition 870190092357, of 09/16/2019, p. 82/156
76/107 (figure 14A), below (figure 14B), left (figure 14C) and right (figure 14D) and the forecast block based on the motion vectors of the current sub-block is denoted as Pc. When P N is based on the movement information of a neighboring sub-block that contains the same movement information as the current sub-block, OBMC is not performed from P N. Otherwise, each pixel of P N is added to the same pixel in Pc, that is, four rows / columns of P N are added to Pc. Weighting factors {1/4, 1/8, 1/16, 1/32} are used for P N and weighting factors {3/4, 7/8, 15/16, 31/32} are used for PC. The exception is small MC blocks (that is, when the height or width of the coding block is equal to 4 or a CU is coded with the sub-CU mode), for which only two rows / columns of P N are added to the Praça. In this case, the weighting factors {1/4, 1/8} are used for P N and the weighting factors {3/4, 7/8} are used for Pc. For P N generated based on movement vectors of neighboring subblocks vertically (horizontally), the pixels in the same row (column) of P N are added to Pc with the same weighting factor. It is noted that BIO is also applied to derive the forecast block P N.
[0152] In JEM examples, for a CU with a size less than or equal to 256 luminescence samples, a CU level indicator is signaled to indicate whether OBMC is applied or not to the current CU. For CUs with a size greater than 256 luminescence samples or not encoded with the AMVP mode, OBMC is applied by default. In the encoder, when OBMC is applied to a CU, its impact is taken into account during the
Petition 870190092357, of 09/16/2019, p. 83/156
77/107 movement estimate. The forecast signal, by using the movement information of the upper neighboring block and left neighboring block, is used to compensate the upper and left limits of the original signal of the current CU, and then the normal movement estimation process is applied.
[0153] According to the techniques of that description, the video encoder 20 and video decoder 30 can restrict the OBMC-derived motion vectors based on whether (1) the restrictions include whether the derived MVs are symmetric, (2) whether the MV differences between the initial VMs and the VMs derived by the DMVD methods are symmetric, (3) whether the derived VMs are antisymmetric, and / or (4) whether the MV differences between the initial VMs and the VMs derived by DMVD methods are antisymmetric. Conditions can be imposed on restrictions so that the restriction applies only on the basis and initial VMs.
[0154] DMVD related methods (for example, BIO, FRUC Bilateral Combination, FRUC Template Combination, Bilateral Template combination and so on) can provide significant bit rate reductions. This description presents several techniques that can further improve DMVD, which can increase the efficiency of the encoding and / or reduce the bit rate. For example, restricting (1) a VM derived by DMVD, and / or (2) a difference in MV between an initial VM and a VM derived by DMVD can increase the efficiency of the encoding and / or reduce the bit rate.
[0155] Table 3 below describes several
Petition 870190092357, of 09/16/2019, p. 84/156
78/107 terminologies used.
Table 3
KKK 4— '-r— | -r— | 4—> -r— | Ή hgg -hgggi — ii — igi — ii — i wi 1 11 — i | XX XX °> l > l ° xV jjYéj gggggg The X and Y components of the initial MVs in ListO and ListlThe initial image order count for ListO and Listl. The image order count can be POC as defined in HEVC. L0_PCC_Derived, L 0 ~ MV_X_De ri ve d, L 0_MV_Y_De r i ve d, Ll_POC_Derived, LI MV X Derived The X and Y components of the MVs derived by the DMVD methods for L0 and LI Ll_MV_Y_Derived The derived image order count for ListO and Listl. The image order count can be POC as defined in HEVC 9-4 9-4 9-4 9-4 9-4 9-4 9-4 9-4 -Η -π-1 -π-1 -π-1 Q Q Q Q 1 1 1 1 X X X X xVxV jjY, X X X X The X and Y components of the MV differences between the initial MVs and the MVs derived by ListO and Listl DMVD methods. CURR_POC Image Order Count (for example, POC as defined in HEVC) of the current slice / image
[0156] Symmetric Motion Vectors - In some examples, VMs derived by DMVD may be restricted by a video encoder (for example, video encoder 20 or video decoder 30), so that the derived VMs are symmetrical. In one example, to be symmetrical, a video encoder (for example, video encoder 20 or video decoder 30) can be configured to restrict derived MVs, so
Petition 870190092357, of 09/16/2019, p. 85/156
79/107 that derived VMs correspond to one or more (for example, all) of the following conditions with respect to each other:
1. L0_MV_X_Derived * (CURR_POC_Ll_POC_Derived) = L1 _ MV _ x _ Derived * (CURR_POC_LO_POC_Derived), and / or
2. L0_MV_Y_Derived * (CURR_POC_Ll_POC_Derived) = L1 _ MV _ Y _ Derived * (CURR_POC_LO_POC_Derived).
[0157] In some examples, conditions (1) and (2) above can each be considered a separate symmetric MV constraint, or can be considered a single symmetric MV constraint when both are applied. In this regard, reference to a constraint being activated here can refer to a condition being activated, which operates as a constraint. For example, reference to a symmetric MV constraint being activated may include (i) condition (1) above being activated, (ii) condition (2) above being activated, or (iii) conditions (1) and (2 ) being activated.
[0158] In some examples, to achieve additional simplifications and / or encoding enhancements, VMs derived by DMVD may be restricted by a video encoder (for example, video encoder 20 or video decoding 30), so that derived MVs may need to match one or more (for example, all, conditions (a) and / or (b) when condition (1) is true, and / or conditions (c) and / or (d), when condition (2) is true) of the conditions below (which can be referred to as pseudo-symmetric conditions):
1. When the ListO and Listl reference images
Petition 870190092357, of 09/16/2019, p. 86/156
80/107 are both before or both after the current image (for example, (CURR_POC_LO_POC_Derived) * (CURR_POC_Ll_POC_Derive d)> 0),
The. L0_MV_X_Derived = Ll_MV_X_Derived, and / or
B. L0_MV_Y_Derived = Ll_MV_Y_Derived;
and / or
2. When the reference images of ListO and Listl are not, both before or after the current image (for example, (CURR_POC_LO_POC_Derived) * (CURR_POC_Ll_LOC_Derived) <0);
ç. L0_MV_X_Derived = -l * Ll_MV_X_Derived, and / or
d. L0_MV_Y_Derived = -l * Ll_MV_Y_Derived.
[0159] In some examples, a video encoder (for example, video encoder 20 or video decoder 30) can be configured to check or determine a POC difference being configured for use, for example, the POC information of the MVs initial and / or POC information of the derived VMs. For example, a video encoder (for example, video encoder 20 or video decoder 30) can be configured to check or determine a POC difference based, for example, on the POC information from the initial MVs and / or POC information from the Derived MVs.
[0160] Symmetric Motion Vector Differences - In some examples, the MV differences between the initial VMs and the DMVD-derived VMs can be restricted by a video encoder (for example, video encoder 20 or video decoder 30) , so that the MV differences are symmetric. The difference
Petition 870190092357, of 09/16/2019, p. 87/156
81/107 of MV is the difference between the initial VMs and the VMs derived by DMVD. The difference in MV can be determined based on components X and Y. In one example, to be symmetrical, a video encoder (for example, video encoder 20 or video decoder 30) can be configured to require differences in Derived MV matches one or more (for example, all) of the following conditions:
1. LO_MV_X_Diff * (CURR_POC-Ll_POC_Derived) = Ll_MV_X_Diff * (CURR_POC-LO_POC_Derived), and / or
2. L0_MV_Y_Diff * (CURR_POC-Ll_POC_Derived) = L1 _ MV _Y_ Dif f * (CURR_POC-LO_POC_Derived).
[0161] In some examples, to achieve additional simplifications and / or coding improvements, the MV differences derived by the DMVD can be restricted by a video encoder (for example, video encoder 20 or video decoder 30), so that the derived MV differences may need to correspond to one or more (for example, all, conditions (a) and / or (b), when condition (1) is true, and / or conditions (c) and / or ( d), when condition (2) is true) of the conditions below (which can be referred to as pseudo-symmetric conditions).
1. When the reference images ListO and Listl are both before or both after the current image (for example, (CURR_POC_LO_POC_Init) * (CURR_POC-Ll_POC_Init)>
0),
The. L0_MV_X_Diff = Ll_MV_X_Diff; and / or
B. L0_MV_Y_Diff = Ll_MV_Y_Diff; and / or
Petition 870190092357, of 09/16/2019, p. 88/156
82/107
2. When the reference images ListO and Listl ARE NOT both before or both after the current image (for example (for example, (CURR_POC-LO_POC_Init) * (CURR_POCLl_POC_Init) <0),
ç. L0_MV_X_Diff = -l * Ll_MV_X_Diff, and / or
d. L0_MV_Y_Diff = -l * Ll_MV_Y_Diff.
[0162] In some examples, a video encoder (for example, video encoder 20 or video decoder 30) can be configured to check or determine a POC difference being configured for use, for example, the POC information of the MVs initial and / or POC information of the derived VMs. For example, a video encoder (for example, video encoder 20 or video decoder 30) can be configured to check or determine a POC difference based, for example, on the POC information from the initial VMs and / or POC information from the Derived MVs.
[0163] Anti-Symmetric Motion Vectors In some examples, the VMs derived by DMVD may be restricted by a video encoder (for example, the video encoder 20 or the video decoder 30), so the derived VMs must be antisymmetric . In one example, to be antisymmetric, a video encoder (for example, video encoder 20 or video decoder 30) can be configured to require that derived VMs meet one or more (for example, all) conditions Next:
1. L0_MV_X_Derived * (CURR_POC-Ll_POC_Derived) = -l * Ll_MV_X_Derived * (CURR_POC-LO_POC_Derived), and / or
Petition 870190092357, of 09/16/2019, p. 89/156
83/107
2. L0_MV_Y_Derived * (CURR_POC-Ll_POC_Derived) = -l * Ll_MV_Y_Derived * (CURR_POC-LO_POC_Derived).
[0164] In some examples, to achieve additional simplifications and / or encoding enhancements, the MV-derived DMVD differences can be restricted by a video encoder (for example, video encoder 20 or video decoder 30 ), so that the derived MV differences may need to match one or more (for example, all, conditions (a) and / or (b), when condition (1) is true, and / or conditions (c) and / or (d), when condition (2) is true) of the conditions below (which can be referred to as pseudo-antisymmetric conditions):
1. When the reference images ListO and Listl are both before or both after the current image (for example, (CURR_POC-LO_POC_Derived) * (CURR_POCLl_POC_Derived)> 0),
The. L0_MV_X_D er ived = -l * Ll_MV_X_D er ived, and / or
B. L0_MV_Y_Derived = -l * Ll_MV_Y_Derived;
and / or
2. When the reference images of ListO and
Listl ARE NOT both before or both after the current image (for example, (CURR_POC-LO_POC_Derived) * (CURR_POCLl_POC_Derived) <0),
ç. L0_MV_X_D er ived = Ll_MV_X_D er ived, and / or
d. L0_MV_Y_Derived = Ll_MV_Y_Derived.
[0165] In some examples, a video encoder (for example, video encoder 20 or video decoder 30) can be configured to check or determine a POC difference being configured
Petition 870190092357, of 09/16/2019, p. 90/156
84/107 for use, for example, the POC information of the initial VMs and / or POC information of the derived VMs. For example, a video encoder (for example, video encoder 20 or video decoder 30) can be configured to check or determine a POC difference based, for example, on the POC information from the initial MVs and / or POC information from the Derived MVs.
[0166] Anti-Symmetric Motion Vector Differences - In some instances, the MV differences between the initial VMs and the DMVD-derived VMs can be restricted by a video encoder (for example, video encoder 20 or video decoder 30) , so that the MV differences are antisymmetric. In one example, to be antisymmetric, a video encoder (for example, video encoder 20 or video decoder 30) can be configured to require that the derived MV differences correspond to one or more (for example, all). following conditions:
1. L0_MV_X_Diff * (CURR_POC-Ll_POC_Derived) l * Ll_MV_X_Diff * (CURR_POC-LO_POC_Derived), and / or
2. L0_MV_Y_Diff * (CURR_POC-Ll_POC_Derived) l * Ll_MV_Y_Diff * (CURR_POC-LO_POC_Derived).
[0167] In some examples, in order to achieve additional simplifications and / or encoding improvements, the MV differences derived by DMVD can be restricted by a video encoder (for example, video encoder 20 or video decoder 30), so that the derived MV differences may need to match one or more (for example, all, conditions (a) and / or (b) when condition (1) is true and / or
Petition 870190092357, of 09/16/2019, p. 91/156
85/107 conditions (c) and / or (d) when condition (2) is true) of the conditions below (which can be referred to as pseudo-antisymmetric conditions):
1. When the reference images of ListO and Listl are both before or both after the current image (for example, (CURR_POC-LO_POC_Init) * (CURR_POC-Ll_POC_Init)> 0),
The. L0_MV_X_Diff = -l * Ll_MV_X_Diff, and / or
B. L0_MV_Y_Diff = -l * Ll_MV_Y_Diff;
and / or
2. When the reference images ListO and Listl ARE NOT both before or both after the reference image (for example, (CURR_POC-LO_POC_Init) * (CURR_POCLl_POC_Init) <0),
ç. L0_MV_X_Diff = Ll_MV_X_Diff, and / or
d. L0_MV_Y_Diff = Ll_MV_Y_Diff.
[0168] In some examples, a video encoder (for example, video encoder 20 or video decoder (30) can be configured to check or determine a POC difference being configured for use, for example, the POC information of the initial MVs and / or the POC information of the derived MVs. For example, a video encoder (for example, video encoder 20 or video decoder 30) can be configured to check or determine a POC difference based, for example, on the information POC of the initial VMs and / or POC information of the derived VMs.
[0169] Conditions for Applying the MV Restrictions / MV Differences - Enabling the Restrictions (eg MV Restrictions / MV Difference
Petition 870190092357, of 09/16/2019, p. 92/156
86/107 symmetric / antisymmetric) in the DMVD motion information can, in some instances, be flagged explicitly or can be implicitly determined according to some encoded information. In some examples, the activation of the signaling of a constraint or the determination of the activation of a constraint can be described respectively as signaling that a constraint has received or is about to receive or determining that the constraint was or is to be applied.
[0170] In some examples, a video encoder (for example, video encoder 20) can be configured to activate one or more of the MV restrictions and / or MV differences described here. For example, the video encoder (for example, video encoder 20) can be configured to signal one or more values indicating whether one or more restrictions are active.
[0171] As an example, a video encoder (for example, video encoder 20) can be configured to signal a value in a sequence of bits corresponding to a first syntax element, where the value corresponding to the first syntax element is indicative of whether one or more symmetric VM constraints have been activated. The value can be a true value (for example, a value of 1) to indicate activation or a false value (for example, a value of 0) to indicate deactivation, or the value can be a false value (for example, example, a value of 0) to indicate activation or a false value (for example, a value of 1) to indicate deactivation. In some examples, a video encoder (for example, video encoder 20) can be
Petition 870190092357, of 09/16/2019, p. 93/156
87/107 configured to signal a value corresponding to the first syntax element only when one or more symmetric VM constraints are activated. In other examples, a video encoder (for example, video encoder 20) can be configured to signal a value corresponding to the first syntax element only when one or more symmetric VM constraints are activated.
[0172] As another example, a video encoder (for example, video encoder 20) can be configured to signal a value in a sequence of bits corresponding to a second element of syntax, where the value corresponding to the second element of syntax is indicative of whether one or more symmetric VM difference constraints have been activated. The value can be a true value (for example, a value of 1) to indicate activation or a false value (for example, a value of 0) to indicate deactivation, the value can be a false value (for example , a value of 0) to indicate activation or a false value (for example, a value of 1) to indicate deactivation. In some examples, a video encoder (for example, video encoder 20) can be configured to signal a value corresponding to the second syntax element only when one or more symmetric MV difference constraints are activated. In other examples, a video encoder (for example, video encoder 20) can be configured to signal a value corresponding to the second syntax element only when one or more symmetric MV difference constraints are disabled.
Petition 870190092357, of 09/16/2019, p. 94/156
88/107 [0173] As another example, a video encoder (for example, video encoder 20) can be configured to signal a value in a sequence of bits corresponding to a third element of syntax, where the value corresponding to the third syntax element is indicative of whether one or more antisymmetric VM constraints have been activated. The value can be a true value (for example, a value of 1) to indicate activation or a false value (for example, a value of 0) to indicate deactivation, or the value can be a false value (for example, example, a value of 0) to indicate activation or a true value (for example, a value of 1) to indicate deactivation. In some examples, a video encoder (for example, video encoder 20) can be configured to signal a value corresponding to the third element of syntax only when one or more antisymmetric MV restrictions are activated. In other examples, a video encoder (for example, video encoder 20) can be configured to signal a value corresponding to the third element of syntax only when one or more antisymmetric MV restrictions are disabled.
[0174] As another example, a video encoder (for example, video encoder 20) can be configured to signal a value in a sequence of bits corresponding to a fourth element of syntax, where the value corresponding to the fourth element of syntax is indicative of whether one or more antisymmetric MV difference restrictions have been activated. The value can be a true value (for example, a value of 1) to indicate the
Petition 870190092357, of 09/16/2019, p. 95/156
89/107 activation or a false value (for example, a value of 0) to indicate deactivation, or the value can be a false value (for example, a value of 0) to indicate deactivation or a true value ( for example, a value of 1) to indicate deactivation. In some examples, a video encoder (for example, video encoder 20) can be configured to signal a value corresponding to the fourth syntax element only when one or more antisymmetric MV difference restrictions are activated. In other examples, a video encoder (for example, video encoder 20) can be configured to signal a value corresponding to the fourth syntax element only when one or more antisymmetric MV difference restrictions are activated.
[0175]
In some examples, a video encoder (for example, video decoder 30) can be configured to receive a bit stream, and determine whether one or more of the MV restrictions and / or MV differences described here are enabled based on one or more values present in the bit string corresponding to one or more syntax elements (for example, one or more of the first, second, third and fourth syntax elements described here).
[0176]
In other examples, a video encoder (for example, video encoder 20 and video decoder 30) can be configured to determine (for example, determine implicitly) whether one or more of the MV restrictions and / or MV differences described here are activated based on other information
Petition 870190092357, of 09/16/2019, p. 96/156
90/107 coded.
[0177] Various illustrative conditions for adaptively activating one or more restrictions described here (for example, one or more of the MV restrictions / symmetric / antisymmetric MV differences) are listed as below.
1. In some examples, one or more restrictions described here (for example, one or more VM restrictions / symmetric / antisymmetric VM differences) can only be activated when the initial VMs are symmetric.
2. In some examples, one or more restrictions described here (for example, one or more MV restrictions and / or symmetric / antisymmetric VM differences) can only be activated when the initial VMs are pseudo-symmetric.
3. In some examples, one or more restrictions described here (for example, one or more MV restrictions / symmetric / antisymmetric VM difference) can only be activated when the initial VMs are antisymmetric.
4. In some examples, one or more restrictions described here (for example, one or more MV restrictions / symmetric / antisymmetric MV difference) can only be activated when the initial VMs are pseudo-antisymmetric.
In some examples, one or more restrictions described here (for example, one or more MV restrictions / symmetric / anti-symmetric MV differences) can only be activated when the initial VMs are not symmetric.
6. In some examples, one or more restrictions described here (for example, one or more symmetric / antisymmetric V / difference V restrictions) can only be activated when the initial VMs are not pseudo-symmetric.
Petition 870190092357, of 09/16/2019, p. 97/156
91/107
7. In some examples, one or more restrictions described here (for example one or more MV restrictions / symmetric / antisymmetric MV differences) can only be activated when the initial VMs are not antisymmetric.
8. In some examples, one or more restrictions described here (for example, one or more symmetric / antisymmetric MV difference / MV restrictions) can only be activated when the initial MVs are not pseudoantisymmetric.
9. In some examples, one or more restrictions described here (for example, one or more MV restrictions / symmetric / anti-symmetric MV differences) can only be activated when the reference images ListO and Listl of the initial MVs are both before or both after the current image.
10. In some examples, one or more restrictions described here (for example, one or more symmetric and / or anti-symmetric MV / difference MV restrictions) can only be activated when the reference images ListO and Listl of the initial MVs are both before or both after the current image.
11. In some examples, one or more restrictions described here (for example, one or more MV restrictions / symmetric / antisymmetric MV differences can only be activated when the reference index of the initial MVs is zero.
12. In some examples, one or more restrictions described here (for example, one or more MV restrictions / symmetric / anti-symmetric MV differences) can only be activated when the reference index of the initial VMs is not
Petition 870190092357, of 09/16/2019, p. 98/156
92/107 is equal to zero.
13. In some examples, one or more restrictions described here (for example, one or more MV restrictions / symmetric / antisymmetric MV differences) can only be activated when the POC distances between the Listl reference image and the current image and the POC distances between the Listl reference image and the current image are the same.
14. In some examples, one or more restrictions described here (for example, one or more MV restrictions / symmetric / antisymmetric MV differences) can only be activated when the POC distances between the ListO reference image and the current image and the distances POC between the reference image Listl and the current image are not the same.
15. In some examples, one or more symmetric MV difference constraints may apply when the initial VMs are not symmetric.
16. In some examples, one or more antisymmetric VM difference restrictions may apply when the initial VMs are symmetric.
17. In some instances, the MV resolution of one or more of the symmetric constraints can be designated deterministically. In one example, for the entire pixel refinement of the Bilateral Template Combination, no symmetric / pseudo-symmetric / asymmetric constraints can be imposed, and the restrictions mentioned above are only in the refinement of motion with half a pixel or quarter pixel precision , or superior. The restriction level (of MV resolution) can be signaled through SPS / PPS / Slice Header. Resolution can also be
Petition 870190092357, of 09/16/2019, p. 99/156
93/107 decided together if other motion refinement tools, such as BIO, sub-pixel FRUC, are activated. For example, when BIO is enabled, the constraint may not be imposed on the refinement of motion with quarter-pixel accuracy or greater.
18. In some instances, the level of constraint (for example, restrictions that are activated) can be made adaptive according to the absolute difference between the ListO and Listl MVs, the staggered absolute difference (based on their relative POC distance) between the ListO and Listl MVs, or the initial SAD values between the interpolated samples of ListO and Listl (that is, P0 and Pl, in this example). In other examples, the ratio of the sum of the absolute difference (SAD) values between (current model, P0) and (current model, Pl) can be used to decide which MV resolution the constraint should be imposed on. In this example, if the ratio of the SAD values is less than a limit, then no symmetric restrictions mentioned above should be imposed.
[0178] Table 4 lists examples of conditions and restrictions applied based on the conditions mentioned above being met.
[0179] This example is illustrated as Restriction Example 1 in Table 4, which also includes other examples of different restrictions.
Table 4: Examples of Conditions and Restrictions
Restriction Examples Conditions Restrictions applied 1 Initial VMs are not symmetric no restriction Initial VMs are not symmetric pseudo-symmetric MV difference
Petition 870190092357, of 09/16/2019, p. 100/156
94/107
2 Initial VMs are symmetrical no restriction Initial VMs are not symmetric symmetric MV difference 3 Initial VMs are pseudo-symmetrical no restriction Initial VMs are not pseudo-symmetric difference of pseudo-symmetric MV 4 Initial VMs are pseudo-symmetrical no restriction Initial VMs are not pseudo-symmetric symmetric MV difference 5 Initial VMs are symmetrical difference of non-pseudo-symmetric MV Initial VMs are not symmetric Difference of pseudo-symmetric MV 6 Initial VMs are symmetrical difference of non-symmetric MV Initial VMs are non-symmetric symmetric MV difference 7 Initial VMs are pseudo-symmetrical difference of non-pseudo-symmetric MV Initial VMs are not pseudo-symmetric difference of pseudo-symmetric MV 8 Initial VMs are pseudo-symmetrical difference of non-symmetric MV Initial VMs are not pseudo-symmetric symmetric MV difference
[0180] Figure 15 illustrates an illustrative use case for the Bilateral Template Combination, according to the present description. Figure 15 illustrates an example where one or more pseudo-symmetric MV difference constraints described here can be applied to the Bilateral Template Combination only when the initial VMs are not symmetric. According to such examples, for the
Petition 870190092357, of 09/16/2019, p. 101/156
95/107
Combination of Bilateral Template, when the initial VMs are not symmetrical, the final VMs can be derived so that the MV differences between the initial VMs and the final VMs are pseudo-symmetrical. For example, as illustrated in figure 15, Bilateral Template 1506 can be first derived using the initial MVs in ListO (L0_MV_Init, pointing to block R o 1502) and Listl (Ll_MV_Init, pointing to block Ri 1504) (for example, the MVs of a candidate for the double forecast mix), by realizing the average of Ro and Ri, and then the Bilateral Template 1506 can be used to search for the blocks that best match on ListO and Listl to find the best MVs on ListO / Listl. The Combination of Bilateral Template can be performed within a predefined search range (for example, entire pixel from -1 to +1) centered on the initial MVs in ListO / Listl looking for blocks, for example, R'o 1508 and R ' i 1510. The difference between the initial blocks (block Ro 1502 and block Ri 1504) and the searched blocks (R'o 1508 and R'i 1510) is illustrated by the difference of the respective MV (denoted L0_MV_Diff and Ll_MV_Diff). In some examples, only the MV pairs that have a pseudo-symmetric MV difference (comparing L0_MV_Diff and Ll_MV_Diff) in ListO and Listl can be considered valid MVs. The valid MV pair with the best combination cost can then be considered the final derived MVs by the Bilateral Template Combination. The illustrated example is denoted as the restriction example 1 in Table 4, illustrated above.
[0181] Figure 16 is a flow chart illustrating an illustrative method according to the techniques of this
Petition 870190092357, of 09/16/2019, p. 102/156
96/107 description. The techniques of figure 16 can be implemented by one or more of a target device 14 or video decoder 30 (see figures 1 and 3).
[0182] In an example of the description, the video decoder 30 can be configured to generate, using the decoder side motion vector (DMVD) derivation, a plurality of derived motion vectors (100). In some examples, using DMVD to generate the plurality of derived motion vectors comprises using one of a BIO process, a FRUC process, a Bilateral Combination process, a FRUC template matching process, or a bilateral template matching process. In some examples, the video decoder 30 can generate the plurality of derived motion vectors based on a determination of whether the first and second initial motion vectors correspond to one or more conditions. The video decoder 30 can be configured to determine a first derived motion vector and a second derived motion vector from the plurality of derived motion vectors based on a cost metric and determining whether a constraint is matched (102). In one example, the cost metric includes a sum of the absolute differences. The constraint can include whether the first derived motion vector and the second derived motion vector have a symmetric motion vector difference, have a pseudo-symmetric motion vector difference, are antisymmetric, have an antisymmetric motion vector difference, or they have a pseudo-antisymmetric motion vector difference. The video decoder
Petition 870190092357, of 09/16/2019, p. 103/156
97/107 video 30 can be configured to determine whether the first derived motion vector and the second derived motion vector have a symmetric motion vector difference, have a pseudo-symmetric motion vector difference, are antisymmetric, have a difference antisymmetric motion vector, or have a pseudo-antisymmetric motion vector difference. The restriction can be signaled through the bit stream, can be derived, or pre-programmed.
[0183] In one example, the video decoder 30 can be configured to determine that the first derived motion vector and the second derived motion vector have the symmetric motion vector difference comprising determining that:
L0_MV_X_Diff * (CURR_POC-Ll_POC_Derived)
Ll_MV_X_Diff * (CURR_POC-LO_POC_Derived) or
L0_MV_Y_Diff * (CURR_POCLl_POC_Derived) = Ll_MV_Y_Diff * (CURR_POC-LO_POC_Derived), where: L0_MV_X_Diff is an X component of a difference between a first initial motion vector and the first motion vector derived from LD_MV_ initial motion vector and the first derived motion vector, Ll_MV_X_Diff is an X component of a difference between a second initial motion vector and the second derived motion vector, Ll_MV_Y_Diff is a Y component of a difference between the second initial motion vector and the second derived motion vector, CURR_POC is a current POC of a current image, LO_POC_Derived is a derived POC for a first list of motion vectors, and Ll_POC_Derived is a POC
Petition 870190092357, of 09/16/2019, p. 104/156
98/107 derived for a second list of motion vectors.
[0184] In another example, the POC video decoder can be configured to determine that the first derived motion vector and the second derived motion vector have the antisymmetric motion vector difference which comprises determining that: L0_MV_X_Diff * (CURR_POC- Ll_POC_Derived) = l * Ll_MV_X_Diff * (CURR_POC-LO_POC_Derived), or
L0_MV_Y_Diff * (CURR_POC-Ll_POC_Derived) = l * Ll_MV_Y_Diff * (CURR_POC-LO_POC_Derived), where:
L0_MV_X_Diff is an X component of a difference between a first initial motion vector and the first derived motion vector, L0_MV_Y_Diff is a Y component of a difference between the first initial motion vector and the first derived motion vector, Ll_MV_X_Diff is a component X of a difference between a second initial motion vector and the second derived motion vector, Ll_MV_Y_Diff is a Y component of a difference between the second initial motion vector and the second derived motion vector, CURR_POC is a current POC of an image current LO_POC_Derived is a derived POC for a first list of motion vectors, and Ll_POC_Derived is a derived POC for a second list of motion vectors.
[0185] In another example, the video decoder 30 can be configured to determine that the first derived motion vector and the second derived motion vector are antisymmetric and comprises determining that: L0_MV_X_Derived * (CURR_POC-Ll_POC_Derived) = l * Ll_MV_X_Denied * (CURR_POC-LO_POC_Derived), or
L0_MV_Y_Derived * (CURR_POC-Ll_POC_Derived) =
Petition 870190092357, of 09/16/2019, p. 105/156
99/107 l * Ll_MV_Y_Derived * (CURR_POC-LO_POC_Derived), where L0_MV_X_Derived is an X component of the first derived motion vector, L0_MV_Y_Derived is a Y component of the first derived motion vector, Ll_MV_X_Derived is an X component of the second derived vector, Ll_MV_Y_Derived is a Y component of the second derived motion vector, CURR_POC is a current POC of a current image, LO_POC_Derived is a derived POC for a first list of motion vectors and Ll_POC_Derived is a derived POC for a second list of motion vectors.
[0186] In another example, the video decoder 30 can be configured to determine that the first derived motion vector and the second derived motion vector have the difference of pseudo-symmetric motion vector comprising determining that L 0_MV_X_Di ff = Ll_MV_X_Dif f , L 0_MV_Y_Di ff = Ll_MV_Y_Di ff, L0_MV_X_Diff = -l * Ll_MV_X_Diff, or L0_MV_Y_Diff = l * Ll_MV_Y_Diff; where: L0_MV_X_Diff is an X component of a difference between a first initial motion vector and the first derived motion vector, L0_MV_Y_Diff is a Y component of a difference between the first initial motion vector and the first derived motion vector, Ll_MV_X_Diff is an X component of a difference between a second initial motion vector and the second derived motion vector, and Ll_MV_Y_Diff is a Y component of a difference between the second initial motion vector and the second derived motion vector.
[0187; ] In another example, the decoder in video 30 can be configured for determine that O first vector derived motion and the second vector in
Petition 870190092357, of 09/16/2019, p. 106/156
100/107 derived movement has the difference of pseudo-antisymmetric movement vector and comprises a determination that
L0 MV X Diff = Ll MV X Diff
L0_MV_Y_Diff = Ll_MV_Y_Diff, L0_MV_X_Diff = -l * Ll_MV_X_Diff or L0_MV_Y_Diff = -l * Ll_MV_Y_Diff; where: L0_MV_X_Diff is an X component of a difference between a first initial motion vector and the first derived motion vector, L0_MV_Y_Diff is a Y component of a difference between the first initial motion and vector and the first derived motion vector, Ll_MV_X_Diff is an X component of a difference between a second initial motion vector and the second derived motion vector, and Ll_MV_Y_Diff is a Y component of a difference between the second initial motion vector and the second derived motion vector.
[0188]
In another example the video decoder 30 can be configured to determine that a first initial motion vector in a list of motion vector candidates and a second initial motion vector in the list of motion vector candidates satisfy a condition in a relationship between the first vector initial movement vector and the second initial movement vector, the relationship comprising: the first initial movement vector and the second initial movement vector are symmetrical, the first initial movement vector and the second initial movement vector are pseudo-symmetrical, the first initial motion vector and second initial motion vector differ from the symmetric motion vector, the first initial motion vector and the second initial motion vector are antisymmetric, the first motion vector
Petition 870190092357, of 09/16/2019, p. 107/156
101/107 initial and the second initial motion vector are pseudo-antisymmetric, or the first initial motion vector and the second initial motion vector have the difference of antisymmetric motion vector, where generating the plurality of derived motion vectors is based in the first initial movement vector and the second initial movement satisfying at least one condition.
[0189] In another example, video decoder 30 can be configured to determine whether a first initial motion vector in a motion vector candidate list and a second initial motion vector in the motion vector candidate list are before of a current image or are after the current image, where determining the first derived motion vector and the second derived motion vector from the plurality of derived motion vectors, based on the cost metric, is additionally based on the determination.
[0190] In another example, video decoder 30 can be configured to determine whether a first image order counting distance (POC), between a first reference image, associated with a first list of motion vector candidates and a current image is equal to zero, and a second POC distance, between a second reference image associated with a second candidate list of motion vector and the current image is equal to zero, where to determine the first derived motion vector and the second derived motion vector, from the plurality of derived motion vectors based on the cost metric is additionally based on
Petition 870190092357, of 09/16/2019, p. 108/156
102/107 determination.
[0191] In another example, video decoder 30 can be configured to determine whether a first image order counting distance (POC) between a first reference image associated with a first list of motion vector candidates and a current image, is equal to zero and a second POC distance, between a second reference image associated with a second candidate list of motion vector and the current image, is equal to zero, where to determine the first derived motion vector and the second derived motion vector, from the plurality of derived motion vectors, based on the cost metric, generating the plurality of derived motion vectors, is based on the determination of the first POC distance between the first reference image associated with the first list of motion vector candidates and the current image, is equal to zero and the second POC distance between the second reference image associated with the second list of candidates for motion motion vector and the current image, is equal to zero determination.
[0192] In another example, the video decoder 30 can be configured to determine at least one restriction from the encoded video bit stream.
[0193] The video decoder 30 can be configured to decode a current block using the first determined derived motion vector and the second derived motion vector (104).
[0194] Figure 17 is a flow chart illustrating an illustrative method according to the techniques of this
Petition 870190092357, of 09/16/2019, p. 109/156
103/107 description. The techniques of figure 17 can be implemented by one or more of a source device 12 or a video encoder 20 (see figures 1 and 2).
[0195] The video encoder 20 can be configured to generate a plurality of derived motion vectors using DMVD (200). In some examples, the video encoder 20 can generate the plurality of derived motion vectors based on a determination of whether the first and second initial motion vectors correspond to one or more conditions.
[0196] Video encoder 20 can be configured to determine a first derived motion vector and a second derived motion vector from the plurality of derived motion vectors based on a cost metric and determining whether a constraint has been matched ( 202). The constraint can include whether the first derived motion vector and the second derived motion vector have a symmetric motion vector difference, have a pseudo-symmetric motion vector difference, are antisymmetric, have an antisymmetric motion vector difference, or they have a pseudo-antisymmetric motion vector difference. The video encoder 20 can be configured to encode a current block using the first derived motion vector and the second derived motion vector (204) determined. The video encoder 20 can be configured to encode the constraint. The video encoder 20 can be further configured to send the constraint through a bit stream.
[0197] It must be recognized that depending on the
Petition 870190092357, of 09/16/2019, p. 110/156
104/107 example, certain acts or events of any of the techniques described here can be performed in a different sequence, can be added, mixed, or left out altogether (for example, not all of the described acts or events are required for practice techniques). In addition, in certain examples, acts or events can be performed simultaneously, for example, through multisequential processing, interrupted processing, or multiple processors, instead of sequentially.
[0198] In one or more examples, the functions described can be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, functions can be stored in or transmitted as one or more instructions or code in a computer-readable medium and executed by a hardware-based processing unit. Computer-readable medium may include computer-readable storage medium, which corresponds to a tangible medium, such as data storage medium, or communication medium including any medium that facilitates the transfer of a computer program from one place to another , for example, according to a communication protocol. Thus, the computer-readable medium can generally correspond to (1) tangible computer-readable storage medium that is non-transitory or (2) a communication medium, such as a signal or carrier wave. The data storage medium can be any available medium that can be accessed by one or more computers or one or more processors to retrieve instructions, code and / or
Petition 870190092357, of 09/16/2019, p. 111/156
105/107 data structures for implementing the techniques described in this description. A computer program product may include a computer-readable medium.
[0199] By way of example, not limitation, such a computer-readable storage medium may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory or any other means that can be used to store the desired program code in the form of instructions or data structures and that can be accessed by a computer. In addition, any connection is properly called a computer-readable medium. For example, if instructions are transmitted from a network site, server or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies, such as such as infrared, radio and microwave, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio and microwave are included in the definition of medium. It should be understood, however, that the computer-readable storage medium and the data storage medium do not include connections, carrier waves, signals or other transient medium, but instead are directed to the tangible and non-transitory. Floppy disk and disk, as used here, include compact disk (CD), laser disk, optical disk, digital versatile disk (DVD), floppy disk and Blu-ray disk, where floppy disks normally play
Petition 870190092357, of 09/16/2019, p. 112/156
106/107 data magnetically, while discs reproduce data optically with lasers. The combinations of the above must also be included in the scope of computer-readable medium.
[0200] Instructions can be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, set of processing circuits (including set of fixed function circuits and / or set of programmable processing circuits), application-specific integrated circuits (ASICs), field programmable port assemblies (FPGAs), or other discrete or integrated logic circuits. Accordingly, the term processor, as used here, can refer to any one of the above structure or any other suitable structure to implement the techniques described here. In addition, in some respects, the functionality described here can be provided within dedicated hardware and / or software modules configured to encode and decode, or incorporated into a combined codec. In addition, the techniques can be fully implemented in one or more circuits or logic elements.
[0201] The techniques of this description can be implemented through a wide variety of devices or devices, including a wireless device, an integrated circuit (IC) or a set of ICs (for example, a chip set). Various components, modules or units are described in this description to emphasize the functional aspects of the devices configured to perform the described techniques, but do not necessarily require realization by hardware units
Petition 870190092357, of 09/16/2019, p. 113/156
107/107 different. Instead, as described above, several units can be combined into one hardware codec unit or provided by a collection of interoperable hardware units, including one or more processors as described above, in conjunction with suitable software and / or firmware.
[0202] Several examples have been described. These and other examples are within the scope of the following claims.
权利要求:
Claims (19)
[1]
1. Method for decoding video data from an encoded video bit stream, the method comprising:
generate, using decoder side motion vector derivation (DMVD), a plurality of derived motion vectors;
determine a first derived motion vector and a second derived motion vector from the plurality of derived motion vectors based on a cost metric, comprising:
determining that the first derived motion vector and the second derived motion vector satisfy at least one constraint in a relationship between the first derived motion vector and the second derived motion vector, the relationship comprising the first derived motion vector and the second derived motion vector have a symmetric motion vector difference, the first derived motion vector and the desired desired motion vector have a pseudo-symmetric motion vector difference, the first derived motion vector and the second derived motion vector are antisymmetric, the first derived motion vector and the second derived motion vector have an antisymmetric motion vector difference, or the first derived motion vector and the second derived motion vector have an antisymmetric motion vector difference; and decode a current block using the first derived motion vector and the second motion vector
Petition 870190092357, of 09/16/2019, p. 115/156
[2]
2/19 derivative determined using the double forecast.
2. Method, according to claim 1, in which using DMVD to generate the plurality of derived motion vectors comprises using a Bidirectional Optical flow process (BIO), a frame rate upward conversion process (FRUC), a Bilateral Combination process, a FRUC template matching process, or a bilateral template matching process.
[3]
A method according to claim 1, in which determining that the first derived motion vector and the second derived motion vector differ from the symmetric motion vector comprises determining that:
L0_MV_X_Diff * (CURR_POCLl_POC_Derived) = Ll_MV_X_Diff * (CURR_POC-LO_POC_Derived) or L0_MV_Y_Diff * (CURR_POCLl_POC_Derived) = Ll_MV_Y_DOC * (CURR_),
LO_MV_X_Diff is an X component of a difference between a first initial motion vector and the first derived motion vector,
LO_MV_Y_Diff is a Y component of a difference between the first initial motion vector and the first derived motion vector;
Ll_MV_X_Diff is an X component of a difference between a second initial motion vector and the second derived motion vector;
Ll_MV_Y_Diff is a Y component of a difference between the second initial motion vector and the second derived motion vector,
CURR_POC is a current image order count
Petition 870190092357, of 09/16/2019, p. 116/156
3/19 (POC) of a current image,
LO_POC_Derived is a derived POC for a first list of motion vectors, and
Ll_POC_Derived is a derived POC for a second list of motion vectors.
[4]
A method according to claim 1, in which determining that the first derived motion vector and the second derived motion vector have the difference of antisymmetric motion vector comprises determining that:
L0_MV_X_Diff * (CURR_POC-Ll_POC_Derived) = l * Ll_MV_X_Diff * (CURR_POC-LO_POC_Derived), or
L0_MV_Y_Diff * (CURR_POC-Ll_POC_Derived) = l * Ll_MV_Y_Diff * (CURR_POC-LO_POC_Derived) where:
LO_MV_X_Diff is an X component of a difference between a first initial motion vector and the first derived motion vector;
LO_MV_Y_Diff is a Y component of a difference between the first initial motion vector and the first derived motion vector;
Ll_MV_X_Diff is an X component of a difference between a second initial motion vector and the second derived motion vector;
Ll_MV_Y_Diff is a Y component of a difference between the second initial motion vector and the second derived motion vector.
CURR_POC is a current image order count (POC) for a current image;
LO_POC_Derived is a derived POC for a
Petition 870190092357, of 09/16/2019, p. 117/156
4/19 first list of motion vectors, and
Ll_POC_Derived is a derived POC for a second list of motion vectors.
[5]
5. Method according to claim 1, in which determining that the first derived motion vector and the second derived motion vector are antisymmetric comprises determining that:
LO_MV_X_Derived * (CURR_POC-Ll_POC_Derived) = 1 * Ll_MV_X_Derived * (CURR_POC-LO_POC_Derived), or
LO_MV_Y_Derived * (CURR_POC-Ll_POC_Derived) = -
l * Ll_MV_Y_Derived * (CURR_POC- LO_POC_Derived), Where: LO_MV_X_Derived is one component X of first vector in derived movement, LO_MV_Y_Derived is one component Y of first vector in derived movement, Ll_MV_X_Derived is one component X of second vector in derived movement; Ll_MV_Y_Derived is one component Y of second value in derived movement; CURR_POC is an order count in current image (POC) in a current image;
L0_ POC_Derived is an POC derivative for an first vector list in movement, and Ll_ POC_Derived is an POC derivative for an Monday vector list in movement. 6. Method, of steel with the claim 1, at the
which determine that the first derived motion vector and the second derived motion vector have the difference of pseudo-symmetric motion vector comprises
Petition 870190092357, of 09/16/2019, p. 118/156
5/19 determine that:
LO_MV_X_Diff = Ll_MV_Diff;
LO_MV_Y_Diff = Ll_MV_Y_Diff;
LO_MV_X_Diff = -l * Ll_MV_X_Diff; or
LO_MV_Y_Diff = -l * Ll_MV_Y_Diff;
Where:
LO_MV_X_Diff is an X component of a difference between a first initial motion vector and the first derived motion vector;
LO_MV_Y_Diff is a Y component of a difference between the first initial motion vector and the first derived motion vector;
Ll_MV_X_Diff is an X component of a difference between a second initial motion vector and the second derived motion vector; and
Ll_MV_Y_Diff is a Y component of a difference between the second initial motion vector and the second derived motion vector.
7. Method according to claim 1, in which determining that the first derived motion vector and the second derived motion vector differ from the pseudo-antisymmetric motion vector comprises determining that:
LO_MV_X_Diff = Ll_MV_X_Diff;
LO_MV_Y_Diff = Ll_MV_Y_Diff;
LO_MV_X_Diff = -l * Ll_MV_X_Diff, or
LO_MV_Y_Diff = -l * Ll_MV_Y_Diff;] where:
LO_MV_X_Diff is an X component of a difference between a first initial motion vector and the first
Petition 870190092357, of 09/16/2019, p. 119/156
[6]
6/19 derived motion vector;
LO_MV_Y_Diff is a Y component of a difference between the first initial motion vector and the first derived motion vector;
Ll_MV_X_Diff is an X component of a difference between a second initial motion vector and the second derived motion vector; and
Ll_MV_Y_Diff is a Y component of a difference between the second initial motion vector and the second derived motion vector.
A method according to claim 1, further comprising:
determine that a first initial motion vector in a motion vector candidate list and a second initial motion vector in a motion vector candidate list satisfy at least one condition in a relationship between the first initial motion vector and the second initial movement vector, the relationship comprising: the first initial movement vector and the second initial movement vector are symmetric, the first initial movement vector and the second initial movement vector are pseudo-symmetrical, the first initial movement vector and the second initial movement vector has the difference of symmetric movement vector, the first initial movement vector and the second initial movement vector are antisymmetric, the first initial movement vector and the second initial movement vector are pseudo-antisymmetric, or the first initial motion vector and the second initial motion vector differ from the motion vector antisymmetric then;
Petition 870190092357, of 09/16/2019, p. 120/156
[7]
7/19 where the generation of the plurality of derived motion vectors is based on the first initial motion vector and the second initial motion vector satisfying at least one condition.
A method according to claim 1, further comprising:
determine whether a first initial motion vector in a motion vector candidate list and a second initial motion vector in the motion vector candidate list are before a current image or are after the current image;
where determining the first derived motion vector and the second derived motion vector from the plurality of derived motion vectors based on the cost metric is additionally based on the determination.
A method according to claim 1, further comprising:
determining whether a first image order counting distance (POC) between a first reference image associated with a first list of motion vector candidates and a current image is equal to zero and a second POC distance between a second reference image associated with a second list of motion vector candidates and the current image, is equal to zero, where to determine the first derived motion vector and the second derived motion vector from the plurality of derived motion vectors based on the metric cost management is additionally based on determination.
A method according to claim 1, further comprising:
Petition 870190092357, of 09/16/2019, p. 121/156
[8]
8/19 determine whether a first image order counting distance (POC), between a first reference image associated with a first list of motion vector candidates and a current image, is equal to zero and a second POC distance between a second reference image associated with a second list of motion vector candidates and the current image, it is equal to zero;
where determining the first derived motion vector and the second derived motion vector from the plurality of derived motion vectors based on the cost metric is additionally based on the determination.
12. The method of claim 1, further comprising:
determining at least one constraint from the encoded video bit stream.
13. Method according to claim 1, in which the cost metric includes a sum of absolute differences.
14. Apparatus configured to decode video data from an encoded video bit stream, the apparatus comprising:
a memory configured to store video data; and one or more processors in communication with the memory, the one or more processors configured to:
generating, using the decoder side motion vector derivation (DMVD), a plurality of derived motion vectors;
determine a first derived motion vector and a second derived motion vector from
Petition 870190092357, of 09/16/2019, p. 122/156
[9]
9/19 of the plurality of derived motion vectors based on a cost metric, comprising:
a determination that the first derived motion vector and the second derived motion vector satisfy at least one constraint in a relationship between the first derived motion vector and the second derived motion vector, the relationship comprising: the first derived motion vector and the second derived motion vector have a symmetric motion vector difference, the first derived motion vector and the second derived motion vector have a symmetric motion vector difference, the first derived motion vector and the second motion vector derivative have a pseudo-symmetric motion vector difference, the first derived motion vector and the second derived motion vector are antisymmetric, the first derived motion vector and the second derived motion vector have an antisymmetric motion vector difference, or the first derived motion vector and second derived motion vector have a pseudo-antisymmetric motion vector difference; and decoding a current block using the first derived motion vector and the second derived motion vector determined using the double prediction.
Apparatus according to claim 14, in which using DMVD to generate the plurality of derived motion vectors comprises using one of a Bidirectional Optical flow process, a frame rate upward conversion process (FRUC), a process Bilateral Combination, a process of combining
Petition 870190092357, of 09/16/2019, p. 123/156
[10]
10/19 FRUC feedback, or a bilateral feedback matching process.
16. Apparatus according to claim 14, in which determining that the first derived motion vector and the second derived motion vector differ from the symmetric motion vector comprises determining that:
L0_MV_X_Diff * (CURR_POCLl_POC_Derived) = Ll_MV_X_Diff * (CURR_POC-LO_POC_Derived) or L0_MV_Y_Diff * (CURR_POCLl_POC_Derived) = Ll_MV_Y_DOC * (CURR_),
L0_MV_X_Diff is an X component of a difference between a first initial motion vector and the first derived motion vector;
L0_MV_Y_Diff is a Y component of a difference between the first initial motion vector and the first derived motion vector;
Ll_MV_X_Diff θ an X component of a difference between a second initial motion vector and the second derived motion vector;
Ll_MV_Y_Diff is a Y component of a difference between the second initial motion vector and the second derived motion vector;
CURR_POC is a current image order count (POC) for a current image,
LO_POC_Derived is a derived POC for a first list of motion vectors, and
Ll_POC_Derived is a derived POC for a second list of motion vectors.
Petition 870190092357, of 09/16/2019, p. 124/156
[11]
11/19
Apparatus according to claim 14, in which determining that the first derived motion vector and the second derived motion vector differ from the antisymmetric motion vector comprises determining that:
L0_MV_X_Diff * (CURR_POC-Ll_POC_Derived) = l * Ll_MV_X_Diff * (CURR_POC-LO_POC_Derived), or
L0_MV_Y_Diff * (CURR_POC-Ll_POC_Derived) = l * Ll_MV_Y_Diff * (CURR_POC-LO_POC_Derived) where:
LO_MV_X_Diff is an X component of a difference between a first initial motion vector and the first derived motion vector;
LO_MV_Y_Diff is a Y component of a difference between the first initial motion vector and the first derived motion vector;
Ll_MV_X_Diff is an X component of a difference between a second initial motion vector and the second derived motion vector;
Ll_MV_Y_Diff is a Y component of a difference between the second vector and initial motion and the second derived motion vector;
CURR_POC is a current image order count (POC) for a current image;
LO_POC_Derived is a derived POC for a first list of motion vectors, and
Ll_POC_Derived is a derived POC for a second list of motion vectors.
18. Apparatus according to claim 14, in which the determination that the first motion vector
Petition 870190092357, of 09/16/2019, p. 125/156
[12]
12/19 derivative and the second derived motion vector are antisymmetric comprises determining that:
LO_MV_X_Derived * (CURR_POC-Ll_POC_Derived) = 1 * Ll_MV_X_Derived * (CURR_POC-LO_POC_Derived), or
LO_MV_Y_Derived * (CURR_POC-Ll_POC_Derived) = -
4V_ Y_Derived * (CURR_POC- LO_POC_Derived), Where: LO_MV_X_Derived is one component X of first vector in derived movement, LO_MV_Y_Derived is one component Y of first vector in derived movement; Ll_MV_X_Derived is one component X of second vector in derived movement; Ll_MV_Y_Derived is one component Y of second vector in derived movement; CURR_POC is an order count in current image
(POC) of a current image r LO_POC_Derived is a POC derivative for an first vector list in : movement; and Ll_POC_Derived is a POC derivative for an Monday vector list in movement. 19. Device, of a deal with the claim 14, in which determine that O first vector of movement
derivative and the second derived motion vector have the difference of pseudo-symmetric motion vector comprises determining that:
L 0_MV_X_Di f f = Ll_MV_X_Dif f;
L 0_MV_Y_Di f f = Ll_MV_Y_Dif f;
L0_MV_X_Diff = -l * Ll_MV_X_Diff; or
L 0_MV_Y_Di f f = -1 * Ll_MV_Y_Di f f;
Petition 870190092357, of 09/16/2019, p. 126/156
[13]
13/19 where:
LO_MV_X_Diff is an X component of a difference between a first initial motion vector and the first derived motion vector;
LO_MV_Y_Diff is a Y component of a difference between the first initial motion vector and the first derived motion vector;
Ll_MV_X_Diff is an X component of a difference between a second initial motion vector and the second derived motion vector; and
Ll_MV_Y_Diff is a Y component of a difference between a second initial motion vector and the second derived motion vector.
20. Apparatus according to claim 14, in which determining that the first derived motion vector and the second derived motion vector differ from the pseudo-antisymmetric motion vector comprises determining that:
L 0_MV_X_Di f f = Ll_MV_X_Dif f;
L 0_MV_Y_Di f f = Ll_MV_Y_Dif f;
L0_MV_X_Diff = -l * Ll_MV_X_Diff, or
L 0_MV_Y_Di f f = -1 * Ll_MV_Y_Di f f, where:
L0_MV_X_Diff is an X component of a difference between a first initial motion vector and the first derived motion vector;
L0_MV_Y_Diff is a Y component of a difference between the first initial motion vector and the first derived motion vector;
Ll_MV_X_Diff is an X component of a difference
Petition 870190092357, of 09/16/2019, p. 127/156
[14]
14/19 between a second initial motion vector and the second derived motion vector, and
Ll_MV_Y_Diff is a Y component of a difference between the second initial motion vector and the second derived motion vector.
21. Apparatus according to claim 14, in which one or more processors are additionally configured to:
determine that a first initial motion vector in a motion vector candidate list and a second initial motion vector in a motion vector candidate list satisfy at least one condition in a relationship between the first initial motion vector and the second initial movement vector, the relationship comprising the first initial movement vector and the second initial movement vector are symmetric, the first initial movement vector and the second initial movement vector are pseudo-symmetrical, the first initial movement vector and the second initial motion vector have the difference of symmetric motion vector, the first initial motion vector and the second initial motion vector are antisymmetric, the first initial motion vector and the second initial motion vector are pseudo-antisymmetric, or the first initial motion vector and second initial motion vector differ from motion vector antisymmetric, where generating the plurality of derived motion vectors is based on the first initial motion vector and the second initial motion vector satisfying at least one condition.
Petition 870190092357, of 09/16/2019, p. 128/156
[15]
15/19
22. Apparatus according to claim 14, in which one or more processors are additionally configured to:
determining whether a first initial motion vector in a motion vector candidate list and a second initial motion vector in the motion vector candidate list are before a current image or after the current image;
where determining the first derived motion vector and the second derived motion vector from the plurality of derived motion vectors based on the cost metric is additionally based on the determination.
23. Apparatus according to claim 14, in which one or more processors are additionally configured to:
determine whether a first image order counting distance (POC) between a first reference image associated with a first list of motion vector candidates and a current image is equal to zero and a second POC distance between a second reference image associated with a list of motion vector candidates and the current image, is equal to zero, where to determine the first derived motion vector and the second derived motion vector from the plurality of derived motion vectors based on cost metric is additionally based on determination.
24. Apparatus according to claim 14, in which one or more processors are additionally configured to:
determine whether a first counting distance
Petition 870190092357, of 09/16/2019, p. 129/156
[16]
16/19 of image order (POC), between a first reference image associated with a first list of motion vector candidates and a current image, is equal to zero and a second POC distance, between a second associated reference image with a second list of motion vector candidates and the current image, is equal to zero, where to determine the first derived motion vector and the second derived motion vector from the plurality of derived motion vectors, based on the metric of cost that generates the plurality of derived motion vectors, is additionally based on the determination of the first POC distance, between the first reference image associated with the first list of motion vector candidates and the current image, is equal to zero and the second POC distance, between the second reference image associated with the second list of motion vector candidates and the current image, is equal to zero determination.
Apparatus according to claim 14, in which the one or more processors are additionally configured to determine at least one restriction from the encoded video bit stream.
26. Apparatus according to claim 14, in which the cost metric includes a sum of absolute differences.
27. Apparatus configured to decode video data from an encoded video bit stream, the apparatus comprising:
means for generating, using the decoder side motion vector (DMVD) derivation, a plurality of derived motion vectors;
Petition 870190092357, of 09/16/2019, p. 130/156
[17]
17/19 means for determining a first derived motion vector and a second derived motion vector from the plurality of derived motion vectors based on a cost metric, comprising:
means for determining that the first derived motion vector and the second derived motion vector satisfy at least one constraint in a relationship between the first derived motion vector and the second derived motion vector, the relationship comprising: the first derived motion vector and the second derived motion vector having a symmetric motion vector difference, the first derived motion vector and the second derived motion vector having a pseudo-symmetric motion vector difference, the first derived motion vector and the second vector derivative motion vector being antisymmetric, the first derived motion vector and the second derived motion vector having a difference of antisymmetric motion vector, or the first derived motion vector and the second derived motion vector having a pseudo motion vector difference -antisymmetric;
and means for decoding a current block using the first determined derived motion vector and the second derived motion vector using double prediction.
28. Apparatus according to claim 27, in which using DMVD to generate the plurality of derived motion vectors comprises using one of a Bi-directional Optical Flow (BIO) process, a process of
Petition 870190092357, of 09/16/2019, p. 131/156
[18]
18/19 upward frame rate conversion (FRUC), a Bilateral Combination process, a FRUC template matching process or a bilateral template matching process.
29. Apparatus configured to encode video data, the apparatus comprising:
a memory configured to store video data; and one or more processors in communication with the memory, the one or more processors configured to:
generating, using the decoder side motion vector derivation (DMVD), a plurality of derived motion vectors;
determine a first derived motion vector and a second derived motion vector from the plurality of derived motion vectors based on a cost metric, comprising:
determine that the first derived motion vector and the second derived motion vector satisfy at least one constraint in a relationship between a first derived motion vector and the second derived motion vector, the relationship comprising: the first derived motion vector and the second derived motion vector having a symmetric motion vector difference, the first derived motion vector and the second derived motion vector having a pseudo-symmetric motion vector difference, the first derived motion vector and the second motion vector derivative being antisymmetric, the first derived motion vector and the second derived motion vector having a difference
Petition 870190092357, of 09/16/2019, p. 132/156
[19]
19/19 antisymmetric motion vector, or the first derived motion vector and the second derived motion vector having a difference of pseudo-antisymmetric motion vector; and encoding a current block using the first derived motion vector and the second derived motion vector using the double prediction.
30. Apparatus according to claim 29, in which using DMVD to generate the plurality of derived motion vectors comprises using a Bidirectional Optical flow process (BIO), a frame rate upward conversion process (FRUC), a Bilateral Combination process, a FRUC template matching process, or a bilateral template matching process.
类似技术:
公开号 | 公开日 | 专利标题
BR112019019210A2|2020-04-14|restriction motion vector information derived by decoder side motion vector derivation
BR112019013684A2|2020-01-28|motion vector reconstructions for bi-directional | optical flow
BR112019017252A2|2020-04-14|deriving motion vector information in a video decoder
RU2705428C2|2019-11-07|Outputting motion information for sub-blocks during video coding
BR112019018689A2|2020-04-07|inter-prediction refinement based on bi-directional | optical flow
WO2018200960A1|2018-11-01|Gradient based matching for motion search and derivation
BR112019026775A2|2020-06-30|Effective design for memory bandwidth for bidirectional optical | streaming
TW201715891A|2017-05-01|Improved bi-directional optical flow for video coding
BR112020006875A2|2020-10-06|low complexity project for fruc
BR112019027821A2|2020-07-07|template pairing based on partial reconstruction for motion vector derivation
BR112021005357A2|2021-06-15|improvements to history-based motion vector predictor
BR112020014654A2|2020-12-01|Affine motion compensation in video encoding
BR112020014522A2|2020-12-08|IMPROVED DERIVATION OF MOTION VECTOR ON THE DECODER SIDE
BR112020006588A2|2020-10-06|affine prediction in video encoding
BR112020021263A2|2021-01-26|mvp derivation limitation based on decoder side motion vector derivation
BR112019027261A2|2020-07-14|motion vector refinement for multi-reference prediction
BR112020006232A2|2020-10-13|Affine prediction motion information encoding for video encoding
BR112019019423A2|2020-04-14|intrapredict mode propagation
BR112020014644A2|2020-12-01|selection of unlock filtering and application in video encoding
BR112021001563A2|2021-04-20|method and inter prediction apparatus
同族专利:
公开号 | 公开日
US10595035B2|2020-03-17|
CA3053479A1|2018-09-27|
MX2019011318A|2019-11-12|
EP3603069A1|2020-02-05|
CO2019010076A2|2019-10-09|
WO2018175720A1|2018-09-27|
KR20190127884A|2019-11-13|
SG11201907531XA|2019-10-30|
CN110431845A|2019-11-08|
PH12019501895A1|2019-10-21|
JP2021182743A|2021-11-25|
RU2019133109A|2021-04-22|
JP2020511859A|2020-04-16|
ZA201906240B|2021-05-26|
AU2018237346A1|2019-09-05|
IL268646A|2022-02-01|
US20180278949A1|2018-09-27|
RU2019133109A3|2021-09-09|
CL2019002680A1|2020-05-29|
IL268646D0|2019-10-31|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题

CN103797795B|2011-07-01|2017-07-28|谷歌技术控股有限责任公司|Method and apparatus for motion-vector prediction|
US10958927B2|2015-03-27|2021-03-23|Qualcomm Incorporated|Motion information derivation mode determination in video coding|
CN108028939B|2015-09-02|2021-10-15|联发科技股份有限公司|Method and apparatus for decoder-side motion derivation for video coding|CN111201795A|2017-10-09|2020-05-26|华为技术有限公司|Memory access window and padding for motion vector modification|
US10652571B2|2018-01-25|2020-05-12|Qualcomm Incorporated|Advanced motion vector prediction speedups for video coding|
US10863190B2|2018-06-14|2020-12-08|Tencent America LLC|Techniques for memory bandwidth optimization in bi-predicted motion vector refinement|
EP3794824A1|2018-06-29|2021-03-24|Beijing Bytedance Network Technology Co. Ltd.|Conditions for updating luts|
CN110662064A|2018-06-29|2020-01-07|北京字节跳动网络技术有限公司|Checking order of motion candidates in LUT|
JP2021530936A|2018-06-29|2021-11-11|北京字節跳動網絡技術有限公司Beijing Bytedance Network Technology Co., Ltd.|Look-up table updates: FIFO, restricted FIFO|
WO2020003282A1|2018-06-29|2020-01-02|Beijing Bytedance Network Technology Co., Ltd.|Managing motion vector predictors for video coding|
GB2588528A|2018-06-29|2021-04-28|Beijing Bytedance Network Tech Co Ltd|Selection of coded motion information for LUT updating|
TWI735902B|2018-07-02|2021-08-11|大陸商北京字節跳動網絡技術有限公司|Lookup table with intra frame prediction and intra frame predication from non adjacent blocks|
TW202025760A|2018-09-12|2020-07-01|大陸商北京字節跳動網絡技術有限公司|How many hmvp candidates to be checked|
JP2022500909A|2018-09-19|2022-01-04|北京字節跳動網絡技術有限公司Beijing Bytedance Network Technology Co., Ltd.|Use of syntax for affine mode with adaptive motion vector resolution|
WO2020084460A1|2018-10-22|2020-04-30|Beijing Bytedance Network Technology Co., Ltd.|Decoder side motion vector derivation in the presence of multi-hypothesis prediction|
JP2022506161A|2018-11-05|2022-01-17|北京字節跳動網絡技術有限公司|Interpolation for inter-prediction with refinement|
KR20210094664A|2019-01-02|2021-07-29|텔레폰악티에볼라겟엘엠에릭슨|Side-motion refinement in video encoding/decoding systems|
CN113383554A|2019-01-13|2021-09-10|北京字节跳动网络技术有限公司|Interaction between LUTs and shared Merge lists|
US11025936B2|2019-01-25|2021-06-01|Tencent America LLC|Method and apparatus for video coding|
CN113366851A|2019-01-31|2021-09-07|北京字节跳动网络技术有限公司|Fast algorithm for symmetric motion vector difference coding and decoding mode|
CN113383548A|2019-02-03|2021-09-10|北京字节跳动网络技术有限公司|Interaction between MV precision and MV differential coding|
WO2020164544A1|2019-02-13|2020-08-20|Beijing Bytedance Network Technology Co., Ltd.|Updating of history based motion vector prediction tables|
WO2020164580A1|2019-02-14|2020-08-20|Beijing Bytedance Network Technology Co., Ltd.|Size selective application of decoder side refining tools|
US11178414B2|2019-02-27|2021-11-16|Mediatek Inc.|Classification for multiple merge tools|
CN113519161A|2019-03-05|2021-10-19|Lg 电子株式会社|Method and apparatus for processing video signal for inter-frame prediction|
CN113475076A|2019-03-11|2021-10-01|阿里巴巴集团控股有限公司|Inter-frame prediction method for encoding video data|
WO2020197290A1|2019-03-26|2020-10-01|인텔렉추얼디스커버리 주식회사|Image encoding/decoding method and apparatus|
WO2020211755A1|2019-04-14|2020-10-22|Beijing Bytedance Network Technology Co., Ltd.|Motion vector and prediction sample refinement|
WO2020221256A1|2019-04-28|2020-11-05|Beijing Bytedance Network Technology Co., Ltd.|Symmetric motion vector difference coding|
CN111586419A|2019-05-13|2020-08-25|北京达佳互联信息技术有限公司|Video decoding method, video encoding method and device|
US11172212B2|2019-06-06|2021-11-09|Qualcomm Incorporated|Decoder-side refinement tool on/off control|
US20200402546A1|2019-06-24|2020-12-24|Seagate Technology Llc|Reducing base deck porosity|
US11272203B2|2019-07-23|2022-03-08|Tencent America LLC|Method and apparatus for video coding|
CN114175655A|2019-07-27|2022-03-11|北京字节跳动网络技术有限公司|Restriction of use of tools according to reference picture type|
CN110545425B|2019-08-21|2021-11-16|浙江大华技术股份有限公司|Inter-frame prediction method, terminal equipment and computer storage medium|
WO2021052495A1|2019-09-20|2021-03-25|Beijing Bytedance Network Technology Co., Ltd.|Adaptive resolution change and scalable coding for screen contents|
法律状态:
2021-10-19| B350| Update of information on the portal [chapter 15.35 patent gazette]|
优先权:
申请号 | 申请日 | 专利标题
US201762475177P| true| 2017-03-22|2017-03-22|
US15/927,854|US10595035B2|2017-03-22|2018-03-21|Constraining motion vector information derived by decoder-side motion vector derivation|
PCT/US2018/023761|WO2018175720A1|2017-03-22|2018-03-22|Constraining motion vector information derived by decoder-side motion vector derivation|
[返回顶部]